Содержание страницы
filecmp – Сравнение файлов и каталогов¶filecmp – File and Directory Comparisons
Модуль filecmp определяет функции для сравнения файлов и каталогов, с различными опциональными компромиссами по времени/точности. Для сравнения файлов см. также модуль difflib.
Модуль filecmp определяет следующие функции:
- filecmp.cmp(f1, f2[, shallow])¶
Сравнивает файлы с именами f1 и f2, возвращая True, если они кажутся равными, иначе False.
Если shallow не задан или равен False, файлы с одинаковыми сигнатурами os.stat() считаются равными.
Файлы, уже сравнённые с помощью этой функции, не будут сравниваться повторно, пока не изменится их сигнатура os.stat().
Обратите внимание, что эта функция не вызывает внешние программы, что обеспечивает её переносимость и эффективность.
- filecmp.cmpfiles(dir1, dir2, common[, shallow])¶
Возвращает три списка имён файлов: match, mismatch, errors. match содержит список файлов, совпадающих в обоих каталогах, mismatch включает имена несовпадающих файлов, а errros – имена файлов, которые не удалось сравнить. Файлы могут попасть в errors, если у пользователя нет прав на чтение или по многим другим причинам, но всегда из-за того, что сравнение по какой-то причине не удалось выполнить.
Параметр common – это список имён файлов, найденных в обоих каталогах. Параметр shallow имеет то же значение и значение по умолчанию, что и для filecmp.cmp().
Пример:
>>> import filecmp
>>> filecmp.cmp('undoc.rst', 'undoc.rst')
True
>>> filecmp.cmp('undoc.rst', 'index.rst')
False
dircmp класс¶The dircmp class
Экземпляры dircmp создаются с помощью этого конструктора:
- class filecmp.dircmp(a, b[, ignore[, hide]])¶
Создаёт новый объект сравнения каталогов для сравнения каталогов a и b. ignore – это список имён для игнорирования; по умолчанию равен ['RCS', 'CVS', 'tags']. hide – это список имён для скрытия; по умолчанию равен [os.curdir, os.pardir].
Класс dircmp предоставляет следующие методы:
- report()¶
- Выводит (в sys.stdout) результат сравнения между a и b.
- report_partial_closure()¶
- Выводит результат сравнения между a и b и общими непосредственными подкаталогами.
- report_full_closure()¶
- Выводит результат сравнения между a и b и общими подкаталогами (рекурсивно).
dircmp предоставляет ряд интересных атрибутов, которые можно использовать для получения различной информации о сравниваемых деревьях каталогов.
Обратите внимание, что через перехватчики __getattr__() все атрибуты вычисляются лениво, поэтому нет потери производительности, если используются только те атрибуты, которые легко вычислить.
- left_list¶
- Файлы и подкаталоги в a, отфильтрованные по hide и ignore.
- right_list¶
- Файлы и подкаталоги в b, отфильтрованные по hide и ignore.
- common¶
- Файлы и подкаталоги, присутствующие в обоих a и b.
- left_only¶
- Файлы и подкаталоги только в a.
- right_only¶
- Файлы и подкаталоги только в b.
- common_dirs¶
- Подкаталоги, присутствующие в обоих a и b.
- common_files¶
- Файлы, присутствующие в обоих a и b
- common_funny¶
- Имена, присутствующие как в a, так и в b, для которых тип различается между dиректориями, или имена, для которых os.stat() сообщает об ошибке.
- same_files¶
- Файлы, совпадающие в обоих каталогах a и b.
- diff_files¶
- Файлы, присутствующие в обоих каталогах a и b, содержимое которых различается.
- funny_files¶
- Файлы, присутствующие в обоих a и b, но которые не удалось сравнить.
- subdirs¶
- Словарь, сопоставляющий имена в common_dirs объектам dircmp.