Лучший способ проверить независимость новой строки для 2 файлов с помощью Python - PullRequest
2 голосов
/ 19 июля 2010

Я пытался

filecmp.cmp(file1,file2)

, но это не работает, поскольку файлы идентичны, за исключением символов новой строки. Есть ли возможность для этого в filecmp или какой-либо другой удобной функции / библиотеке, или мне нужно читать оба файла построчно и сравнивать их?

Ответы [ 3 ]

5 голосов
/ 19 июля 2010

Я думаю, что простая удобная функция, подобная этой, должна делать работу:

1 голос
/ 19 июля 2010

Попробуйте модуль difflib - он предоставляет классы и функции для сравнения последовательностей.

Для ваших нужд класс difflib.Differ выглядит интересно.

class difflib.Differ

Это класс для сравнения последовательностей строк текста и создания понятных человеку различий или дельт. Разница использует SequenceMatcher как для сравнения последовательностей строк, так и для сравнения последовательностей символов в похожих (почти совпадающих) строках.

См. отличается пример , который сравнивает два текста. Сравниваемые последовательности также можно получить с помощью метода readlines() для файловоподобных объектов.

0 голосов
/ 19 июля 2010

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

Вы можете использовать такую ​​функцию

def do_cmp(f1, f2):
    bufsize = 8*1024
    fp1 = open(f1, 'rb')
    fp2 = open(f2, 'rb')
    while True:
        b1 = fp1.read(bufsize)
        b2 = fp2.read(bufsize)
        if not is_same(b1, b2):
            return False
        if not b1:
            return True

def is_same(text1, text2):
    return text1.replace("\n","") == text2.replace("\n","")

, которую вы можете улучшить is_same, поэтомучто он соответствует вашим требованиям, например, вы также можете игнорировать регистр.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...