Сравнение содержимого текстовых файлов в Python

Я пытаюсь написать программу, которая будет открывать файлы, читать содержимое и сравнивать их с другими открытыми файлами. Мне нужно показать, если они не достаточно похожи, похожи или точные копии друг друга. Я пытаюсь использовать модуль filecmp, но он не работает для меня. Вот что у меня так далеко:

import filecmp

#Opens selected files
file1 = open('file1.txt')
file2 = open('file2.txt')

#Compares different files
filecmp.cmp('file1','file2', shallow=False)

#Closes Files
filecmp.clear_cache()
close.file1
close.file2

Какие-либо предложения?

2 ответа

filecmp это неправильный инструмент для использования
Попробуйте это вместо этого:
1. Загрузите содержимое каждого файла в список
2. Превратите списки в наборы 3. Вычтите один набор из другого 4. Результат дает различия между двумя, которые вы можете анализировать.

Например:

list1 = set(line.strip() for line in open("file1.txt"))
list2 = set(line.strip() for line in open("file2.txt"))
diff1 = list1 - list2 # subtract 1 set from the other for the difference
diff2 = list2 - list1 # subtract 1 set from the other for the difference
save = open("diff.txt",'w') # Write file differences details for analysis
for i in diff1:
    save.write(i+'\n')
save.close()
save = open("diff2.txt",'w') # Write file differences details for analysis
for i in diff2:
    save.write(i+'\n')
save.close()

или посмотрите на difflib https://docs.python.org/3.5/library/difflib.html

>>> import filecmp
>>> filecmp.cmp('C://Desktop/a.txt', 'C://Desktop/b.txt')
True
>>> 

В этом случае у меня есть 2 текстовых файла a.txt а также b.txt, Оба файла содержат одну и ту же строку string,

Если я изменю string в одном из файлов что-то другое, вывод False

Другие вопросы по тегам