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

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

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

El módulo "glob" encuentra todos los nombres de rutas que se asemejan
a un patrón especificado de acuerdo a las reglas que se siguen en una
terminal Unix, aunque los resultados se retornan con un orden
arbitrario.  No se realiza expansión de virgulilla (*tilde ("~")
expansion* en inglés) pero "*", "?" y caracteres de rango expresados
mediante "[]" serán emparejados correctamente.  Esto se realiza usando
las funciones "os.scandir()" y "fnmatch.fnmatch()" de forma concertada
sin invocar, realmente, a una *subshell*.  Nótese que, a diferencia de
"fnmatch.fnmatch()", "glob" trata a los nombres de ficheros que
comienzan con  (".") como casos especiales. (Para la expansión de
virgulilla o variable de terminal, usa "os.path.expanduser()" y
"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)

   Return a possibly-empty list of path names that match *pathname*,
   which must be a string containing a path specification. *pathname*
   can be either absolute (like "/usr/src/Python-1.5/Makefile") or
   relative (like "../../Tools/*/*.gif"), and can contain shell-style
   wildcards. Broken symlinks are included in the results (as in the
   shell). Whether or not the results are sorted depends on the file
   system.  If a file that satisfies conditions is removed or added
   during the call of this function, whether a path name for that file
   be included is unspecified.

   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
