← retour aux snippets

filecmp: comparer fichiers et répertoires

Comparer le contenu de fichiers et détecter les différences d'arbres.

python filesystem #filecmp#compare#diff

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.