← retour aux snippets

shutil: copytree avec ignore et dirs_exist_ok

Copier un dossier en ignorant certains motifs et sans erreur s'il existe.

python filesystem #shutil#copy#filesystem

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.