¿Cómo usar la función Glob() para encontrar archivos recursivamente en Python?

Glob es un término general utilizado para definir técnicas para hacer coincidir patrones específicos de acuerdo con las reglas relacionadas con el shell de Unix. Los sistemas y shells Linux y Unix también admiten glob y también proporcionan funciones glob()en las bibliotecas del sistema.

En Python, el módulo glob se usa para recuperar archivos/nombres de rutas que coinciden con un patrón específico. Las reglas de patrón de glob siguen las reglas estándar de expansión de rutas de Unix. También se predice que, según los puntos de referencia, es más rápido que otros métodos para hacer coincidir los nombres de ruta en los directorios. Con glob, también podemos usar comodines ("*, ?, [ranges])además de la búsqueda de strings exactas para hacer que la recuperación de rutas sea más simple y conveniente.

Nota: este módulo viene integrado con Python, por lo que no es necesario instalarlo externamente.

Ejemplo:

# Python program to demonstrate
# glob using different wildcards
  
  
import glob
  
  
print('Named explicitly:')
for name in glob.glob('/home/geeks/Desktop/gfg/data.txt'):
    print(name)
  
# Using '*' pattern 
print('\nNamed with wildcard *:')
for name in glob.glob('/home/geeks/Desktop/gfg/*'):
    print(name)
  
# Using '?' pattern
print('\nNamed with wildcard ?:')
for name in glob.glob('/home/geeks/Desktop/gfg/data?.txt'):
    print(name)
  
# Using [0-9] pattern
print('\nNamed with wildcard ranges:')
for name in glob.glob('/home/geeks/Desktop/gfg/*[0-9].*'):
    print(name)

Producción :

python-glob

Uso de la función Glob() para encontrar archivos recursivamente

Podemos usar la función glob.glob()o glob.iglob()directamente desde el módulo glob para recuperar rutas recursivamente desde dentro de los directorios/archivos y subdirectorios/subarchivos.

Sintaxis:

glob.glob(pathname, *, recursive=False)
glob.iglob(pathname, *, recursive=False)

Nota: Cuando se establece recursivo, True**” seguido del separador de ruta ('./**/')coincidirá con cualquier archivo o directorio.

Ejemplo:

# Python program to find files
# recursively using Python
  
  
import glob
  
  
# Returns a list of names in list files.
print("Using glob.glob()")
files = glob.glob('/home/geeks/Desktop/gfg/**/*.txt', 
                   recursive = True)
for file in files:
    print(file)
  
  
# It returns an iterator which will 
# be printed simultaneously.
print("\nUsing glob.iglob()")
for filename in glob.iglob('/home/geeks/Desktop/gfg/**/*.txt',
                           recursive = True):
    print(filename)

Producción :

python-glob
For older versions of python:
The most simple method is to use os.walk() as it is specifically designed and optimized to allow recursive browsing of a directory tree. Or we can also use os.listdir() to get all the files in directory and subdirectories and then filter out.

Veámoslo a través de un ejemplo-
Ejemplo:

# Python program to find files
# recursively using Python
  
  
import os
   
# Using os.walk()
for dirpath, dirs, files in os.walk('src'): 
  for filename in files:
    fname = os.path.join(dirpath,filename)
    if fname.endswith('.c'):
      print(fname)
   
"""
Or
We can also use fnmatch.filter()
to filter out results.
"""
for dirpath, dirs, files in os.walk('src'): 
  for filename in fnmatch.filter(files, '*.c'):
    print(os.path.join(dirpath, filename))
   
# Using os.listdir()
path = "src"
dir_list = os.listdir(path)
for filename in fnmatch.filter(dir_list,'*.c'):
  print(os.path.join(dirpath, filename))

Producción :

 
./src/add.c
./src/subtract.c
./src/sub/mul.c
./src/sub/div.c

./src/add.c
./src/subtract.c
./src/sub/mul.c
./src/sub/div.c

./src/add.c
./src/subtract.c
./src/sub/mul.c
./src/sub/div.c

Publicación traducida automáticamente

Artículo escrito por sid779 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *