Python сравнивает два файла

Обновлено: 21.11.2024

Прочитайте тот же набор байтов из файла 2. Сравните их по байтам… Для больших файлов:

  1. то же (имя1, имя2):
  2. с open(name1, «rb») как один:
  3. где open(name2, «rb») равно двум:
  4. chunk = other = True.
  5. в то время как фрагмент или другое:
  6. кусок = один. прочитать(1000)
  7. другое = два. прочитать(1000)
  8. если кусок != другое:

Как сравнить два имени файла в Python?

Сравнение файлов и каталогов в Python

  1. filecmp. cmp(f1, f2, мелкое=Истина)
  2. filecmp. cmpfiles(dir1, dir2, мелкий)
  3. filecmp. dircmp(a,b)
  4. report() Этот метод выводит результат сравнения каталогов.
  5. влево, вправо.
  6. левый_список, правый_список.
  7. общие, общие_файлы, общие_каталоги.
  8. тот же_файл, разные_файлы.

Как проверить, совпадают ли два файла в Python?

«Проверить, идентичны ли два файла python» Код ответа

  1. >>> импортировать filecmp.
  2. >>> файлcmp. cmp('файл1.txt', 'файл1.txt')
  3. Верно.
  4. >>> файлcmp. cmp('файл1.txt', 'файл2.txt')
  5. Неверно.

Как сравнить два имени файла?

В меню "Файл" нажмите "Сравнить каталоги". В диалоговом окне Выбор каталогов введите имена двух папок, которые вы хотите сравнить, в полях Dir1 и Dir2. Если вы хотите рекурсивно сравнивать файлы в этих папках, установите флажок Включить подкаталоги.

Как сравнить в Word?

Просмотр и сравнение документов рядом

  1. Откройте оба файла, которые вы хотите сравнить.
  2. На вкладке "Вид" в группе "Окно" нажмите "Просмотр рядом". Примечания. Для одновременной прокрутки обоих документов нажмите «Синхронная прокрутка». в группе "Окно" на вкладке "Вид".

Как вы сравниваете в Word 2016?

Что делать:

  1. Перейдите на вкладку "Обзор".
  2. В группе «Сравнить» выберите «Сравнить» → «Сравнить». Появится диалоговое окно «Сравнить документы».
  3. Выберите исходный документ в раскрывающемся списке Исходный документ.
  4. Выберите отредактированный документ в раскрывающемся списке «Пересмотренный документ».
  5. Нажмите "ОК".

Что такое сочетание клавиш для изменения шрифта?

Горячая клавиша — Ctrl+Shift+P, но то, как она работает, зависит от того, что вы видите на экране. Это может показаться странным, но вы можете попробовать. Если у вас отображается панель инструментов «Форматирование» (как у большинства людей), то нажатие Ctrl+Shift+P выбирает элемент управления «Размер шрифта» на панели инструментов.

Какую кнопку вы нажимаете, чтобы создать новый документ из двух версий существующего документа?

Вот как создать новый документ из существующего документа: Нажмите кнопку «Office» → «Создать» (Alt+F, N), чтобы открыть окно «Новый документ». Затем нажмите «Новый из существующих…» (она находится прямо под кнопкой «Пустой документ»). Три точки в конце названия кнопки означают, что появится еще одно диалоговое окно.

Какое сочетание клавиш используется для сохранения документа под другим именем?

Сохраните копию файла в Документы на вашем ПК. A, C, Y, 8, чтобы переместить местоположение в Документы. Затем нажмите Alt+A, Y, 5, чтобы сохранить. Откройте диалоговое окно «Сохранить как», чтобы сохранить файл под другим именем или в другом месте.

Модуль filecmp в Python можно использовать для сравнения файлов и каталогов. 1.

filecmp Сравнивает файлы file1 и file2 и возвращает True, если они идентичны, и False, если нет. По умолчанию файлы с идентичными атрибутами, возвращаемыми функцией os.stat(), считаются равными. Если мелководье не указано (или имеет значение True), файлы с одинаковой сигнатурой статистики считаются равными.

Сравнивает содержимое файлов, содержащихся в общем списке двух каталогов dir1 и dir2. cmpfiles возвращает кортеж, содержащий три списка - совпадение, несоответствие, ошибки в именах файлов.

match — список файлов, одинаковых в обоих каталогах.

несоответствие — список файлов, которые не соответствуют друг другу.

ошибки — список файлов, которые не удалось сравнить по какой-либо причине.

Создает объект сравнения каталогов, который можно использовать для выполнения различных операций сравнения в каталогах dir1 и dir2.

ignore — игнорирует список имен файлов, которые нужно игнорировать, значение по умолчанию ['RCS','CVS','tags'].

hide — список имен файлов, которые нужно скрыть, список по умолчанию [os.curdir, os.pardir] (['.', '..'] в UNIX.

Экземпляры filecmp.dircmp реализуют следующие методы, выводящие подготовленные отчеты в sys.stdout:

report() : печатает сравнение двух каталогов.

report_partial_closure() : печатает сравнение двух каталогов, а также непосредственных подкаталогов двух каталогов.

report_full_closure(): печатает сравнение двух каталогов, всех их подкаталогов, всех подкаталогов этих подкаталогов и т. д. (т. е. рекурсивно).

left_list: файлы и подкаталоги, найденные в каталоге path1, не включая элементы скрытого списка.

right_list: файлы и подкаталоги, найденные в каталоге path2, не включая элементы скрытого списка.

общие: файлы и подкаталоги, находящиеся как в каталоге path1, так и в каталоге path2.

left_only: файлы и подкаталоги, находящиеся только в каталоге path1.

right_only: файлы и подкаталоги, находящиеся только в каталоге path2.

common_dirs: подкаталоги, находящиеся как в каталоге path1, так и в каталоге path2.

common_files: файлы, находящиеся как в каталоге path1, так и в каталоге path2.

same_files: пути к файлам, содержимое которых идентично как в каталоге path1, так и в каталоге path2.

diff_files: пути к файлам, которые находятся как в каталоге path1, так и в каталоге path2, но содержимое которых различается.

funny_files: пути к файлам, которые находятся как в каталоге path1, так и в каталоге path2, но по какой-либо причине не могут быть сопоставлены.

subdirs: словарь, который сопоставляет имена в common_dirs с объектами dircmp.

Подготовка тестовых данных для сравнения.

Пример filecmp Запуск примера filecmp. Неглубокий аргумент указывает cmp(), следует ли просматривать содержимое файла в дополнение к его метаданным.

По умолчанию выполняется поверхностное сравнение с использованием информации, доступной из os.stat(). Если результаты совпадают, файлы считаются одинаковыми. Таким образом, файлы одинакового размера, созданные в одно и то же время, считаются одинаковыми, даже если их содержимое различается.

Если для мелкого задано значение False, содержимое файла сравнивается всегда.

Вывод

cmpfiles Пример:

Используйте cmpfiles() для сравнения набора файлов в двух каталогах без рекурсии.

<р>7. Сравнение каталогов.

Вывод

Вы можете дополнительно попробовать все команды, упомянутые в пункте 1, чтобы увидеть, как ведет себя каждый метод.

Если вы найдете эту информацию полезной, рассмотрите возможность приобретения экземпляра моей книги Стандартная библиотека Python на примере.

Содержание страницы

Навигация

Эта страница

Примеры

Вывод всех примеров программ из PyMOTW был сгенерирован с помощью Python 2.7.8, если не указано иное. Некоторые из описанных здесь функций могут быть недоступны в более ранних версиях Python.

Если вы ищете примеры, которые работают в Python 3, обратитесь к разделу сайта PyMOTW-3.

Навигация

Цель:Сравнить файлы и каталоги в файловой системе.
Доступно в:2.1 и выше

Пример данных¶

В приведенных ниже примерах используется набор тестовых файлов, созданных с помощью filecmp_mkexamples.py .

Одна и та же структура каталогов повторяется один раз в каталогах «common_dir», что дает интересные варианты рекурсивного сравнения.

Сравнение файлов¶

Модуль filecmp включает функции и класс для сравнения файлов и каталогов в файловой системе. Если вам нужно сравнить два файла, используйте функцию cmp().

По умолчанию cmp() просматривает только информацию, доступную из os.stat(). Неглубокий аргумент сообщает cmp(), следует ли также просматривать содержимое файла. По умолчанию выполняется поверхностное сравнение без просмотра файлов. Обратите внимание, что файлы одинакового размера, созданные одновременно, кажутся одинаковыми, если их содержимое не сравнивать.

Чтобы сравнить набор файлов в двух каталогах без рекурсии, используйте filecmp.cmpfiles(). Аргументами являются имена каталогов и список файлов, которые нужно проверить в двух местах. Список общих файлов должен содержать только имена файлов (каталоги всегда приводят к несоответствию), и файлы должны присутствовать в обоих местах. В приведенном ниже коде показан простой способ создания общего списка. Если у вас есть более короткая формула, опубликуйте ее в комментариях. Сравнение также принимает флаг «неглубокий», как и в случае с cmp().

cmpfiles() возвращает три списка имен файлов для совпадающих, несовпадающих файлов и файлов, которые не удалось сравнить (из-за проблем с правами доступа или по любой другой причине).

Использование dircmp¶

Описанные выше функции подходят для относительно простых сравнений, но для рекурсивного сравнения больших деревьев каталогов или для более полного анализа более полезен класс dircmp. В самом простом случае вы можете распечатать отчет, сравнивающий два каталога с помощью метода report():

Вывод представляет собой простой текстовый отчет, показывающий результаты только содержимого заданных каталогов, без рекурсии.В этом случае файл «not_the_same» считается одним и тем же, потому что содержимое не сравнивается. Невозможно заставить dircmp сравнивать содержимое файлов, как это делает cmp().

Для получения более подробной информации и рекурсивного сравнения используйте report_full_closure():

Вывод включает сравнение всех параллельных подкаталогов.

Использование различий в вашей программе¶

Помимо создания печатных отчетов, dircmp составляет полезные списки файлов, которые вы можете использовать непосредственно в своих программах. Каждый из следующих атрибутов вычисляется только по запросу, поэтому создание экземпляра dircmp не требует больших дополнительных затрат.

Файлы и подкаталоги, содержащиеся в сравниваемых каталогах, перечислены в левом_списке и правом_списке:

Входные данные можно отфильтровать, передав конструктору список имен, которые следует игнорировать. По умолчанию имена RCS, CVS и теги игнорируются.

В этом случае «common_file» исключается из списка сравниваемых файлов.

Набор файлов, общих для обоих входных каталогов, поддерживается общим, а файлы, уникальные для каждого каталога, перечислены в списках только для левого и только для правого.

Общие элементы могут быть дополнительно разбиты на файлы, каталоги и «забавные» элементы (все, что имеет разные типы в двух каталогах или где есть ошибка от os.stat()).

В примере данных элемент с именем «file_in_dir1» является файлом в одном каталоге и подкаталогом в другом, поэтому он отображается в «забавном» списке.

Различия между файлами разбиваются аналогичным образом:

Помните, что файл «not_the_same» сравнивается только через os.stat, а его содержимое не проверяется.

Наконец, подкаталоги также сопоставляются с новыми объектами dircmp в подкаталогах атрибутов, что упрощает рекурсивное сравнение.

filecmp Документация стандартной библиотеки для этого модуля. Каталоги из os Список содержимого каталога. difflib Вычисление различий между двумя последовательностями.

Навигация

© Авторские права Дуг Хеллманн. | | Последнее обновление: 11 июля 2020 г. | Создано с помощью Sphinx. | Дизайн на основе "Листьев" от SmallPark |

Это простой скрипт Python для сравнения двух текстовых файлов построчно и вывода только тех строк, которые различаются.

Анализ программы

Программа просит пользователя ввести имена двух файлов для сравнения. Затем он открывает файлы в режиме только для чтения и считывает по одной строке из каждого файла и сравнивает их после удаления всех завершающих пробелов, что означает, что мы игнорируем новую строку и пробелы в конце строки.

Статьи по теме

Оставить комментарий

Комментарии

как мы можем отразить в отчетах. то есть: HTML-файл

Совершенно уверен, что это не позволило бы правильно пометить два файла как разные, если бы они были одинаковыми, за исключением того, что один файл содержал больше строк. Например, "Привет!" и "Привет!\nЭта строка не принимается во внимание" не будут отмечены как разные.

Отлично! Очень полезно. Большое спасибо!

Когда я ввожу приведенный выше код и запускаю, я получаю следующую ошибку Traceback (последний последний вызов): f1 = open(fname1) FileNotFoundError: [Errno 2] Нет такого файла или каталога: 'fileName'

Я внимательно следил за вами здесь, мне пришлось немного добавить к f1 = open(fname1, encoding="utf8"). Хотя теперь я добавил, что все идет гладко, только нет выхода. Я не знаю почему. Любая помощь?

может в файлах нет разницы? Вывод печатается только тогда, когда строки разные.

Можете помочь, как сохранить сравниваемый файл с консоли в текстовый файл в папке

Когда я запускал приведенный выше скрипт от имени sekar.py, он спрашивал имя файла, когда я ввел имя файла как file1.txt, я увидел, что ошибка отображается, как показано ниже. Введите первое имя файла: file1.txt Traceback (последний последний вызов): Файл "C:\Python27\Scripts\PY\sekar.py", строка 2, в fname1 = input("Введите первое имя файла: ") Файл "", строка 1, в NameError: name 'ф

если ваше имя файла — test1.txt. По этому — fname1 = input («Введите первое имя файла:») ​​python получает ввод следующим образом: fname1 = test1.txt, тогда как ему нужно следующим образом: fname1 = «test1. txt" Надеюсь, вы меня поняли.

Моя цель аналогична, но мне нужен некоторый упорядоченный вывод. Скажем, если "file1.txt" содержит abc, а "file2.txt" содержит bac. Тогда при выполнении скрипта я должен получить - Статус File Diff: Success Если обнаружена какая-то разница затем он должен вывести - Статус файла Diff: Failed [проверить diff.txt] diff.txt должен иметь номер строки, содержимое и имя файла, которые отличаются.. Можете ли вы помочь здесь..?

Очень круто, и почти то, что мне нужно. Но на самом деле нужно искать и отмечать строки в File1, которых нет НИГДЕ в File2 или наоборот.Я знаю, что это, вероятно, займет больше времени в обработке, но это нормально. Этот сценарий отмечает строки в файле 1, которые не совпадают с номером строки в файле 2 или наоборот.

Помните, что каждая строка в Файле-1 должна сравниваться с каждой строкой в Файле-2 и наоборот, иначе вы на самом деле не сравниваете содержимое каждого файла с другим.

Я чему-то учусь здесь, а не робот, если я переключаюсь слишком быстро, и это потому, что я что-то ищу.

Читайте также: