← retour aux snippets

glob: motifs et parcours récursif avec iglob

Lister des fichiers avec motifs, y compris ** récursif (Python 3.5+).

python filesystem #glob#patterns#recursive

objectif

Lister des fichiers avec motifs, y compris ** récursif (Python 3.5+).

code minimal

import glob, tempfile, pathlib
with tempfile.TemporaryDirectory() as tmp:
    root = pathlib.Path(tmp); (root/"d").mkdir(); (root/"d"/"f.txt").write_text("x", encoding="utf-8")
    files = list(glob.iglob(str(root/"**"/"*.txt"), recursive=True))
    print(any(f.endswith("f.txt") for f in files))  # attendu: True

utilisation

import glob, tempfile, pathlib
with tempfile.TemporaryDirectory() as tmp:
    root = pathlib.Path(tmp); (root/"a.py").write_text("x"); (root/"b.txt").write_text("y")
    print(sorted(glob.glob(str(root/"*.py")))[0].endswith(".py"))

variante(s) utile(s)

import glob
print(isinstance(list(glob.iglob("**/*.py", recursive=True)), list))

notes

  • iglob renvoie un itérateur paresseux; préférez-le pour de gros arbres.
  • Les motifs respectent les règles de glob Unix (pas de regex).