# 10.7. `glob` — Recherche de chemins de style Unix selon certains motifs

Code source : 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.listdir()` and `fnmatch.fnmatch()` functions in concert, and not by actually invoking a subshell. Note that unlike `fnmatch.fnmatch()`, `glob` treats filenames beginning with a dot (`.`) as special cases. (For tilde and shell variable expansion, use `os.path.expanduser()` and `os.path.expandvars()`.)

Pour une correspondance littérale, il faut entourer le métacaractère par des crochets. Par exemple, `'[?]'` reconnaît le caractère `'?'`.

`glob.``glob`(pathname)

  Renvoie une liste, potentiellement vide, de chemins correspondant au motif pathname, qui doit être une chaîne de caractères contenant la spécification du chemin. pathname peut être soit absolu (comme `/usr/src/Python-1.5/Makefile`) soit relatif (comme `../../Tools/*/*.gif`), et contenir un caractère de remplacement de style shell. Les liens symboliques cassés sont aussi inclus dans les résultats (comme pour le shell).

`glob.``iglob`(pathname)

  Renvoie un iterator qui produit les mêmes valeurs que `glob()`, sans toutes les charger en mémoire simultanément.

  Nouveau dans la version 2.5.

For example, consider a directory containing only the following files: `1.gif`, `2.txt`, and `card.gif`. `glob()` will produce the following results. Notice how any leading components of the path are preserved.

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

Si le répertoire contient des fichiers commençant par `.`, ils ne sont pas reconnus par défaut. Par exemple, considérons un répertoire contenant `card.gif` et `.card.gif` :

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

Voir aussi

Module `fnmatch`
  Recherche de noms de fichiers de style shell (ne concerne pas les chemins)