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

У меня есть два файла, и я хочу выполнить некоторую мудрую строкой операцию через них обоих. (Другими словами, первые строки каждого файла соответствуют, также, как и второе, и т.д.), Теперь, я могу думать о многих немного громоздких способах выполнить итерации через оба файла одновременно; однако, это - Python, таким образом, я предполагаю, что существует некоторая синтаксическая стенография.

Другими словами, есть ли некоторый простой способ адаптироваться

for line in file:

так, чтобы это вытянуло данные из обоих файлов одновременно?

20
задан martineau 1 May 2017 в 19:01
поделиться

2 ответа

Python 2:

Используйте itertools.izip для соединения двух итераторов.

from itertools import izip
for line_from_file_1, line_from_file_2 in izip(open(file_1), open(file_2)):

Если файлы имеют разную длину, используйте izip_longest .

В Python 3 используйте вместо них zip и zip_longest . Также используйте с для открытия файлов, чтобы закрытие выполнялось автоматически даже в случае ошибок.

with open(file1name) as file1, open(file2name) as file2:
    for line1, line2 in zip(file1, file2):
        #do stuff
37
ответ дан 29 November 2019 в 23:19
поделиться

Вы можете попробовать

for line1, line2 in zip(file1, file2):
    #do stuff

Осторожно, этот цикл завершится, когда закончится более короткий файл.

При использовании Python 2, itertools.izip лучше для таких вещей, потому что он не создает список.

9
ответ дан 29 November 2019 в 23:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: