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