objectif
Copier un dossier en ignorant certains motifs et sans erreur s’il existe.
code minimal
import shutil
from pathlib import Path
from tempfile import TemporaryDirectory
with TemporaryDirectory() as tmp:
src = Path(tmp)/"src"; dst = Path(tmp)/"dst"
(src/"__pycache__").mkdir(parents=True)
(src/"keep.txt").write_text("ok", encoding="utf-8")
shutil.copytree(src, dst, ignore=shutil.ignore_patterns("__pycache__"), dirs_exist_ok=True)
print((dst/"keep.txt").exists() and not (dst/"__pycache__").exists()) # attendu: True
utilisation
import shutil
print(callable(shutil.copytree))
variante(s) utile(s)
import shutil
ignored = shutil.ignore_patterns("*.tmp", "*.log")
print(callable(ignored))
notes
- dirs_exist_ok=True (3.8+) évite une erreur si la cible existe.
- ignore_patterns permet d’exclure des fichiers/dossiers.