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, сравнивающий файлы