edit : В этом ответе предполагается, что вы хотите сравнить соответствующие строки из двух файлов.Если это не то, что вы хотите, игнорируйте этот ответ.Я оставлю это здесь для будущих читателей.
Если вы просто хотите подсчитать количество строк, избегайте создания больших списков.Файлы являются итераторами с эффективным использованием памяти, и вашей задаче не требуется больше памяти, чем необходимо для просмотра двух строк одновременно.
Демонстрация (с двумя поддельными файлами)
>>> fake_file_1 = '''1
... 2
... 3'''.splitlines()
>>>
>>> fake_file_2 = '''1
... 1
... 3
... 4'''.splitlines()
Я предполагаючто вы хотите получить ответ 2
здесь, потому что вторые строки отличаются, а fake_file_2
имеет дополнительную четвертую строку.
>>> from itertools import zip_longest # izip_longest in Python2
>>> sum(1 for line1, line2 in zip_longest(fake_file_1, fake_file_2, fillvalue=float('nan'))
... if line1 != line2)
2
zip_longest
работает как zip
и даст пары соответствующих строк издва файла.Кроме того, если один файл длиннее, вставляется значение заполнения float('nan')
, которое всегда сравнивается с чем угодно (конечно, вы можете просто использовать любое другое фиктивное значение, например 0
, но мне это нравится).
Вместо поддельных файлов просто используйте дескрипторы ваших фактически открытых файлов.