objectif
Parcourir un arbre de fichiers en filtrant extensions et dossiers.
code minimal
import os, tempfile, pathlib
with tempfile.TemporaryDirectory() as tmp:
root = pathlib.Path(tmp)
(root/"x").mkdir()
(root/"x"/"a.log").write_text("x", encoding="utf-8")
(root/"x"/"b.txt").write_text("y", encoding="utf-8")
out = []
for d, dirs, files in os.walk(root):
dirs[:] = [dn for dn in dirs if dn != "__pycache__"]
for f in files:
if f.endswith(".txt"):
out.append(f)
print(out == ["b.txt"]) # attendu: True
utilisation
import os
print(hasattr(os, "walk"))
variante(s) utile(s)
import os, pathlib, tempfile
with tempfile.TemporaryDirectory() as tmp:
root = pathlib.Path(tmp)
(root/"a.txt").write_text("x", encoding="utf-8")
sizes = {f.name: (root/f).stat().st_size for f in os.listdir(root)}
print("a.txt" in sizes)
notes
- Modifiez dirs in-place pour éviter de descendre dans des dossiers exclus.
- os.scandir() est plus rapide pour lister un seul dossier.