"glob" --- Recherche de chemins de style Unix selon certains motifs
*******************************************************************

**Code source :** Lib/glob.py

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

Le module "glob" recherche tous les chemins correspondant à un motif
particulier selon les règles utilisées par le shell Unix, les
résultats sont renvoyés dans un ordre arbitraire. Aucun remplacement
du tilde n'est réalisé, mais les caractères "*", "?", et les
caractères "[]" exprimant un intervalle sont correctement renvoyés.
Cette opération est réalisée en utilisant les fonctions "os.scandir()"
et "fnmatch.fnmatch()" de concert, et sans invoquer une sous-commande.
Notons qu'à la différence de "fnmatch.fnmatch()", "glob" traite les
noms de fichiers commençant par un point (".") comme des cas spéciaux.
(Pour remplacer le tilde et les variables shell, nous vous conseillons
d'utiliser les fonctions "os.path.expanduser()" et
"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 "'?'".

Voir aussi:

  Le module "pathlib" offre une représentation objet de haut niveau
  des chemins.

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.

   If *recursive* is true, the pattern ""**"" will match any files and
   zero or more directories, subdirectories and symbolic links to
   directories. If the pattern is followed by an "os.sep" or
   "os.altsep" then files will not match.

   Raises an auditing event "glob.glob" with arguments "pathname",
   "recursive".

   Note:

     Utiliser le motif ""**"" dans de grandes arborescences de dossier
     peut consommer une quantité de temps démesurée.

   Modifié dans la version 3.5: Gestion des chemins récursifs
   utilisant le motif  ""**"".

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

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

   Raises an auditing event "glob.glob" with arguments "pathname",
   "recursive".

glob.escape(pathname)

   Échappe tous les caractères spéciaux ("'?'", "'*'" et "'['"). Cela
   est utile pour reconnaître une chaîne de caractère littérale
   arbitraire qui contiendrait ce type de caractères. Les caractères
   spéciaux dans les disques et répertoires partagés (chemins UNC) ne
   sont pas échappés, e.g. sous Windows "escape('//?/c:/Quo
   vadis?.txt')" renvoie "'//?/c:/Quo vadis[?].txt'".

   Nouveau dans la version 3.4.

Par exemple, considérons un répertoire contenant les fichiers suivants
: "1.gif", "2.txt", "card.gif" et un sous-répertoire "sub" contenant
seulement le fichier "3.txt". "glob()"  produit les résultats
suivants. Notons que les composantes principales des chemins sont
préservées.

   >>> 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 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)
