почему был выполнен только внутренний цикл?
Это наблюдение неверно.Оба цикла были выполнены.
file
объекты являются генераторами.Их можно повторять только один раз, после чего они считаются использованными (т. Е. Пустыми).
На первой итерации внешнего цикла file2
еще не был использован, поэтому внутренний цикл может бытьвыполняется как ожидалось.
Начиная со второй итерации внешнего цикла, file2
полностью используется (т. е. пусто), следовательно, внешнему циклу нечего выполнять, и он по существу эквивалентен:
for line in file1:
for line2 in []:
print(line2)
Чтобы исправить это, используйте .readlines
для получения содержимого файлов в виде списков.
Кстати, вы можете иметь несколько операторов with
в одной строке, следовательно, сохраняя уровень отступа.Кроме того, 'r'
является режимом по умолчанию:
with open('file1.txt') as file1, open('file2.txt') as file2:
...