← retour aux snippets

pathlib: glob et rglob avec filtres

Lister des fichiers par motif, de façon récursive ou non.

python filesystem #pathlib#glob#filesystem

objectif

Lister des fichiers par motif, de façon récursive ou non.

code minimal

from pathlib import Path
from tempfile import TemporaryDirectory

with TemporaryDirectory() as tmp:
    root = Path(tmp)
    (root / "a.py").write_text("print('a')\n", encoding="utf-8")
    (root / "b.txt").write_text("b\n", encoding="utf-8")
    (root / "sub").mkdir()
    (root / "sub" / "c.py").write_text("print('c')\n", encoding="utf-8")
    py_files = sorted(p.name for p in root.rglob("*.py"))
    print(py_files == ["a.py","c.py"])  # attendu: True

utilisation

from pathlib import Path
files = [p for p in Path(".").glob("*.md") if p.stat().st_size > 0]
print(isinstance(files, list))

variante(s) utile(s)

from pathlib import Path
py = list(Path(".").rglob("**/*.py"))  # globstar aussi accepté
print(isinstance(py, list))

notes

  • rglob(“*.ext”) explore récursivement.
  • Combinez avec stat() pour filtrer par taille, date, etc.