objectif
Comparer le contenu de fichiers et détecter les différences d’arbres.
code minimal
import filecmp, tempfile, pathlib
with tempfile.TemporaryDirectory() as tmp:
a = pathlib.Path(tmp) / "a.txt"
b = pathlib.Path(tmp) / "b.txt"
a.write_text("x", encoding="utf-8"); b.write_text("x", encoding="utf-8")
print(filecmp.cmp(a, b, shallow=False)) # attendu: True
utilisation
import filecmp, tempfile, pathlib
with tempfile.TemporaryDirectory() as tmp:
ra = pathlib.Path(tmp) / "A"; rb = pathlib.Path(tmp) / "B"
(ra).mkdir(); (rb).mkdir()
(ra/"x").write_text("1", encoding="utf-8"); (rb/"x").write_text("2", encoding="utf-8")
d = filecmp.dircmp(ra, rb)
print("x" in d.common)
variante(s) utile(s)
import filecmp
print(hasattr(filecmp, "cmpfiles"))
notes
- shallow=False force une comparaison par contenu (pas seulement mtime/taille).
- dircmp offre left_only, right_only, diff_files, etc.