# `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