Как сравнить два текстовых файла в Python?
Python предоставил методы для очень лаконичного управления файлами. В этой статье мы собираемся обсудить одно из приложений функций обработки файлов Python, то есть сравнение файлов.
Используемые файлы:
- Текстовый файл 1
- Текстовый файл 2
Метод 1: одновременное сравнение всего файла
Python поддерживает модуль filecmp с методом filecmp.cmp (), который возвращает три списка, содержащих совпадающие файлы, несовпадающие файлы и ошибки, касающиеся тех файлов, которые нельзя было сравнить. Этот метод может работать в двух режимах:
- неглубокий режим: сравниваются только метаданные файлов, такие как размер, дата изменения и т. д.
- глубокий режим: сравнивается содержимое файлов.
Syntax:
cmp(a, b)
Parameters:
a and b are the two numbers in which the comparison is being done.
Returns:
- -1 if a<b
- 0 if a=b
- 1 if a>b
Программа:
Python3
import filecmp f1 = "C:/Users/user/Documents/intro.txt" f2 = "C:/Users/user/Desktop/intro1.txt" # shallow comparison result = filecmp. cmp (f1, f2) print (result) # deep comparison result = filecmp. cmp (f1, f2, shallow = False ) print (result) |
Выход:
False
False
Метод 2: сравнение файлов построчно
Недостатком описанного выше подхода является то, что мы не можем получить строки, в которых файлы различаются. Хотя это необязательное требование, мы часто хотим следить за строками, в которых файлы различаются, а затем манипулировать этим в наших интересах. Основной подход к реализации этого - хранить каждую строку каждого файла в отдельных списках, по одному для каждого файла. Эти списки сравниваются друг с другом по два файла за раз.
Подход:
- Откройте файлы для сравнения
- Просмотрите файлы и сравните каждую строку двух файлов.
- Если строки идентичны, выведите ТАКЖЕ на экране вывода.
- В противном случае выведите разные строки из обоих файлов на экран вывода.
Программа:
Python3
# reading files f1 = open ( "C:/Users/user/Documents/intro.txt" , "r" ) f2 = open ( "C:/Users/user/Desktop/intro1.txt" , "r" ) i = 0 for line1 in f1: i + = 1 for line2 in f2: # matching line1 from both files if line1 = = line2: # print IDENTICAL if similar print ( "Line " , i, ": IDENTICAL" ) else : print ( "Line " , i, ":" ) # else print that line from both files print ( " File 1:" , line1, end = '') print ( " File 2:" , line2, end = '') break # closing files f1.close() f2.close() |
Выход:
Метод 3: сравнение всего каталога
Python поддерживает модуль filecmp с методом filecmp.cmpfiles (), который возвращает три списка, содержащих совпавшие файлы, несовпадающие файлы и ошибки, касающиеся тех файлов, которые нельзя было сравнить. Он похож на первый подход, но используется для сравнения файлов в двух разных каталогах.
Программа:
Python3
import filecmp d1 = "C:/Users/user/Documents/" d2 = "C:/Users/user/Desktop/" files = [ 'intro.txt' ] # shallow comparison match, mismatch, errors = filecmp.cmpfiles(d1, d2, files) print ( 'Shallow comparison' ) print ( "Match:" , match) print ( "Mismatch:" , mismatch) print ( "Errors:" , errors) # deep comparison match, mismatch, errors = filecmp.cmpfiles(d1, d2, files, shallow = False ) print ( 'Deep comparison' ) print ( "Match:" , match) print ( "Mismatch:" , mismatch) print ( "Errors:" , errors) |
Выход:
Shallow Comparison
Match: [ ]
Mismatch: [ ‘ intro.txt ‘]
Errors: [ ]
Deep comparison
Match: []
Mismatch: [ ‘ intro.txt ‘]
Errors: [ ]
Внимание компьютерщик! Укрепите свои основы с помощью базового курса программирования Python и изучите основы.
Для начала подготовьтесь к собеседованию. Расширьте свои концепции структур данных с помощью курса Python DS. А чтобы начать свое путешествие по машинному обучению, присоединяйтесь к курсу Машинное обучение - базовый уровень.