Python Glossary English

все Python 3filecmpпонятие

filecmp.dircmp

сравнение каталогов

Класс для сравнения двух каталогов: списки общих, уникальных, одинаковых и различающихся файлов, обход подкаталогов и отчёт.

Синтаксис

filecmp.dircmp(a, b, ignore=None, hide=None, *, shallow=True)

Атрибуты вычисляются лениво при первом обращении: left_only, right_only, same_files, diff_files, common_dirs, subdirs. Файлы сравниваются поверхностно по размеру и mtime (параметр shallow — только с 3.13), поэтому diff_files может пропустить различие. По умолчанию игнорируются '.git', '__pycache__' и другие из DEFAULT_IGNORES. diff_files касается только верхнего уровня — вглубь ведёт subdirs или report_full_closure().

Примеры

import filecmp, os
os.makedirs('L/sub'); os.makedirs('R/sub')
for d in 'LR':
    open(f'{d}/same.txt', 'w').write('1')
    open(f'{d}/sub/x.txt', 'w').write(d)
open('L/only.txt', 'w').write('o')
dc = filecmp.dircmp('L', 'R')
print(dc.left_only, dc.same_files, dc.diff_files)  # → ['only.txt'] ['same.txt'] []
print(dc.subdirs['sub'].diff_files)  # → ['x.txt']
# Python 3.13+
import filecmp, os
os.makedirs('L'); os.makedirs('R')
open('L/f.txt', 'w').write('abc'); open('R/f.txt', 'w').write('xyz')
st = os.stat('L/f.txt')
os.utime('R/f.txt', ns=(st.st_atime_ns, st.st_mtime_ns))
print(filecmp.dircmp('L', 'R').diff_files)  # → []
print(filecmp.dircmp('L', 'R', shallow=False).diff_files)  # → ['f.txt']

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности