Создание списка строк по содержимому файла
При использовании with объект файла, возвращаемый вызовом open(), доступен только в пределах содержащего его блока with. Если вы хотите, чтобы содержимое файла оставалось доступным за пределами блока with, сохраните строки файла в списке внутри блока и в дальнейшем работайте с полученным списком. Одни части файла можно обработать немедленно и отложить другие для обработки в будущем.
В следующем примере строки pi_digits.txt сохраняются в списке в блоке with, после чего выводятся за пределами этого блока:
filename = 'pi_digits.txt'
with open(filename) as file_object:
(1) . .lines = file_object.readlines()
(2)for line in lines:
. .print(line.rstrip())
В точке (1) метод readlines() последовательно читает каждую строку из файла и сохраняет ее в списке. Список сохраняется в переменной lines, с которой можно продолжить работу после завершения блока with. В точке (2) в простом цикле for выводятся все элементы списка lines. Так как каждый элемент lines соответствует ровно одной строке файла, вывод точно соответствует его содержимому.