Как мне сравнить два текстовых файла с путями к файлам и вывести разницу в другом текстовом файле?

#python

#python

Вопрос:

Я работаю над кодом, который сравнивает два текстовых файла друг с другом и выводит их в другой текстовый файл. Пока я продолжаю получать ошибку «uncallable unicode» в строке 5. Чего не хватает в моем текущем коде?

 enter code here
import glob, os, shutil, time, string

def compare(File1,File2):
    with open(File1,'r') as f:
        d=set(f.readlines())


    with open(File2,'r') as f:
         e=set(f.readlines())


    with open('C:...results.txt','a') as f:
        for line in list(d-e):
           f.write(line)




compare(r'C:...original_contours.txt',r'C:...reprojected_contours.txt')
  

Комментарии:

1. Я не распознаю ошибку uncallable Unicode . Пожалуйста, сообщите точную ошибку, включая трассировку стека.

2. Вероятно, он упомянул 'unicode' object is not callable

3. вероятно, это связано со «специальными» символами в файле. По умолчанию функция open угадывает кодировку на основе пользовательских настроек. Если вы знаете точную кодировку этих файлов, укажите их в open. Кроме того, вы можете открывать файлы в режиме rb (двоичном)

Ответ №1:

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

Это стоит проверить.

difflib

Ответ №2:

Добавьте encoding='utf8' в свой код:

 with open(File1, 'r', encoding='utf8') as f:
    d=set(f.readlines())

...

with open(File2, 'r', encoding='utf8') as f:
     e=set(f.readlines())