Código fuente: Lib/glob.py
El módulo glob
encuentra todos los nombres de ruta que coinciden con un patrón especificadosegún las reglas utilizadas por el shell de Unix, aunque los resultados se devuelven en un orden arbitrario. No se realiza ninguna expansión de tildes, pero *
, ?
y los rangos de caracteres expresados con serán correctamente comparados. Esto se hace mediante el uso de las funciones
os.scandir()
y fnmatch.fnmatch()
en conjunto, y no invocando realmente una subestructura. Tenga en cuenta que, a diferencia de fnmatch.fnmatch()
, glob
trata los nombres de archivo que comienzan con un punto (.
) como casos especiales. (Para la expansión de tildes y variables de shell, utilice os.path.expanduser()
yos.path.expandvars()
.)
Para una coincidencia literal, envuelva los metacaracteres entre paréntesis.Por ejemplo, ''
coincide con el carácter '?'
.
Véase también
El módulo pathlib
ofrece objetos de ruta de alto nivel.
glob.
glob
(pathname, *, recursive=False)¶
Devuelve una lista posiblemente vacía de nombres de rutas que coinciden con pathname, que debe ser una cadena que contenga una especificación de ruta. pathname puede ser absoluto (como /usr/src/Python-1.5/Makefile
) o relativo (como../../Tools/*/*.gif
), y puede contener comodines de estilo shell. Los enlaces de tipo Brokensymlinks se incluyen en los resultados (como en el shell). La ordenación de los resultados depende del sistema de archivos. Si se elimina o añade un archivo que satisface las condiciones durante la llamada a esta función, no se especifica si se incluirá el nombre de la ruta de ese archivo.
Si la recursividad es verdadera, el patrón «**
» coincidirá con cualquier archivo y con cero o más directorios, subdirectorios y enlaces simbólicos a directorios. Si el patrón es seguido por un os.sep
o os.altsep
entonces los archivos no coincidirán.
Lanza un evento de auditoría glob.glob
con argumentos pathname
, recursive
.
Nota
Usar el patrón «**
» en árboles de directorios grandes puede consumir una cantidad excesiva de tiempo.
Cambiado en la versión 3.5: Soporte para globos recursivos usando «**
«.
glob.
iglob
(pathname, *, recursive=False)¶
Devuelve un iterador que produce los mismos valores que glob()
sin almacenarlos todos simultáneamente.
Llama a un evento de auditoría glob.glob
con argumentos pathname
, recursive
.
glob.
escape
(pathname)¶
Escapar todos los caracteres especiales ('?'
, '*'
y '.txt'
.
Nuevo en la versión 3.4.
Por ejemplo, considere un directorio que contiene los siguientes archivos:1.gif
, 2.txt
, card.gif
y un subdirectorio sub
que sólo contiene el archivo 3.txt
. glob()
producirá los siguientes resultados. Observe cómo se conservan los componentes iniciales de la ruta.
>>> import glob>>> glob.glob('./.*')>>> glob.glob('*.gif')>>> glob.glob('?.gif')>>> glob.glob('**/*.txt', recursive=True)>>> glob.glob('./**/', recursive=True)
Si el directorio contiene archivos que empiezan por .
no se buscarán por defecto. Por ejemplo, considere un directorio que contenga card.gif
y.card.gif
:
>>> import glob>>> glob.glob('*.gif')>>> glob.glob('.c*')
Véase también
Módulo fnmatch
Expansión de nombres de archivo (no de rutas) al estilo de los shells