У меня есть два файла, и я хочу выполнить некоторую мудрую строкой операцию через них обоих. (Другими словами, первые строки каждого файла соответствуют, также, как и второе, и т.д.), Теперь, я могу думать о многих немного громоздких способах выполнить итерации через оба файла одновременно; однако, это - Python, таким образом, я предполагаю, что существует некоторая синтаксическая стенография.
Другими словами, есть ли некоторый простой способ адаптироваться
for line in file:
так, чтобы это вытянуло данные из обоих файлов одновременно?
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
Вы можете попробовать
for line1, line2 in zip(file1, file2):
#do stuff
Осторожно, этот цикл завершится, когда закончится более короткий файл.
При использовании Python 2, itertools.izip
лучше для таких вещей, потому что он не создает список
.