"glob" --- Expansión del patrón de nombres de ruta de estilo Unix
*****************************************************************

**Código fuente:** Lib/glob.py

======================================================================

The "glob" module finds all the pathnames matching a specified pattern
according to the rules used by the Unix shell, although results are
returned in arbitrary order.  No tilde expansion is done, but "*",
"?", and character ranges expressed with "[]" will be correctly
matched.  This is done by using the "os.scandir()" and
"fnmatch.fnmatch()" functions in concert, and not by actually invoking
a subshell.

Note that files beginning with a dot (".") can only be matched by
patterns that also start with a dot, unlike "fnmatch.fnmatch()" or
"pathlib.Path.glob()". (For tilde and shell variable expansion, use
"os.path.expanduser()" and "os.path.expandvars()".)

Para una coincidencia literal, envuelve los meta-caracteres en
corchetes. Por ejemplo, "'[?]'" empareja el caracter "'?'".

Ver también: El módulo "pathlib" ofrece objetos ruta de alto nivel.

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

   Retorna una lista posiblemente vacía de nombres de ruta que
   coincidan con *pathname*, que debe ser una cadena de caracteres 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 wildcards de estilo shell.
   Los enlaces simbólicos rotos se incluyen en los resultados (como en
   el shell). La clasificación de los resultados depende del sistema
   de archivos. Si un archivo que cumple las condiciones se elimina o
   se agrega durante la llamada de esta función, no se especifica si
   se incluirá un nombre de ruta para ese archivo.

   Si *recursive* es verdadero, el patrón ""**"" coincidirá con
   cualquier fichero y cero o más directorios, subdirectorios y
   enlaces simbólicos a directorios.  Si el patrón va seguido de un
   "os.sep" o "os.altsep" los ficheros no coincidirán.

   Lanza un evento de auditoría "glob.glob" con los argumentos
   "pathname", "recursive".

   Nota:

     El uso del patrón ""**"" en árboles de directorios grandes podría
     consumir una cantidad de tiempo excesiva.

   Distinto en la versión 3.5: Soporte para globs recursivos usando
   ""**"".

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

   Retorna un *iterador* el cual produce los mismos valores que
   "glob()" sin necesidad de almacenarlos todos de forma simultánea.

   Lanza un evento de auditoría "glob.glob" con los argumentos
   "pathname", "recursive".

glob.escape(pathname)

   Escapa todos los caracteres especiales ("'?'", "'*'" y "'['"). Esto
   es útil si deseas coincidir una cadena de caracteres literal
   arbitraria que podría contener caracteres especiales.  Los
   caracteres especiales en unidades compartidas/UNC no se eluden,
   e.g. en Windows "escape('//?/c:/Quo vadis?.txt')" retorna
   "'//?/c:/Quo vadis[?].txt'".

   Nuevo en la versión 3.4.

Por ejemplo, considera un directorio que contenga los siguientes
ficheros: "1.gif", "2.txt", "card.gif" y un subdirectorio "sub" el
cual contenga solo el fichero "3.txt".  "glob()" producirá los
siguientes resultados.  Nótese como se preservará cualquier componente
inicial de la ruta.

   >>> import glob
   >>> glob.glob('./[0-9].*')
   ['./1.gif', './2.txt']
   >>> glob.glob('*.gif')
   ['1.gif', 'card.gif']
   >>> glob.glob('?.gif')
   ['1.gif']
   >>> glob.glob('**/*.txt', recursive=True)
   ['2.txt', 'sub/3.txt']
   >>> glob.glob('./**/', recursive=True)
   ['./', './sub/']

Si un directorio contiene ficheros que comienzan con "." no coincidirá
por defecto. Por ejemplo, considera un directorio que contiene
"card.gif" y ".card.gif":

   >>> import glob
   >>> glob.glob('*.gif')
   ['card.gif']
   >>> glob.glob('.c*')
   ['.card.gif']

Ver también:

  Módulo "fnmatch"
     Expansión de nombre de fichero (no de ruta) al estilo de la
     terminal
