Python - быстрое решение для удаления повторяющихся строк в 2 файлах

У меня есть два файла: файл A и файл B. Я хотел бы получить номера строк всех строк в файле B, которые существуют в файле A. Но если строка действительно находится в файле A, я не буду идентифицировать ее как "существующую в файле A", если в ней также не указана следующая строка. Итак, я написал следующий код:

def compare_two(fileA, fileB):
    with open(fileA, 'r') as fa:
        fa_content = fa.read()
        with open(fileB, 'r') as fb:
            keep_line_num = []  # the line number that's not in fileA
            i = 1
            while True:
                line = fb.readline()
                if line == '':  # There are no blank lines in both files
                    break
                last_pos = fb.tell()
                theFollowing = line
                new_line = fb.readline()  # get the next line
                theFollowing += new_line
                fb.seek(last_pos)
                if theFollowing not in fa_content:
                    keep_line_num.append(i)
                i += 1
        fb.close()
    fa.close()
    return keep_line_num

compare_two(fileA, fileB)

Это прекрасно работает для небольших файлов. Но я хочу использовать его для больших файлов размером до 2 ГБ, и этот метод слишком медленный для меня. Есть ли другой способ работать с этим в Python2.7?

1 ответ

Взгляните на difflib, он поставляется с Python.

Он может сказать вам, где ваши файлы отличаются или идентичны. Смотрите также python difflib, сравнивающий файлы

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