pi_digits.txt 3.1415926535
8979323846
2643383279
Чтобы опробовать эти примеры, либо введите данные в редакторе и сохраните файл
с именем
pi_digits .txt
, либо загрузите файл из ресурсов книги на странице
https://
www .nostarch .com/pythoncrashcourse2e/
. Сохраните файл в каталоге, в котором будут
храниться программы этой главы.
Следующая программа открывает этот файл, читает его и выводит содержимое на
экран:
file_reader.py with open('pi_digits.txt') as file_object:
contents = file_object.read()
print(contents)
В первой строке этой программы многое заслуживает вашего внимания. Начнем
с функции
open()
. Чтобы выполнить любые операции с файлом — даже просто
вывести его содержимое, — сначала необходимо
открыть файл. Функция
open()
получает один аргумент: имя открываемого файла. Python ищет файл с указанным
именем в каталоге, в котором находится файл текущей программы. В данном при-
мере выполняется программа
file_reader .py
, поэтому Python ищет файл
pi_digits .txt
в каталоге, в котором хранится
file_reader .py
. Функция
open()
возвращает объект,
представляющий файл. В данном случае
open('pi_digits.txt')
возвращает объ-
ект, представляющий файл
pi_digits .txt
. Python сохраняет этот объект в переменной
file_object
, с которой мы будем работать позднее в программе.
Конструкция с ключевым словом
with
закрывает файл после того, как надобность
в нем отпадет. Обратите внимание: в этой программе есть вызов
open()
, но нет
вызова
close()
. Файлы можно открывать и закрывать явными вызовами
open()
и
close()
; но если из-за ошибки в программе команда
close()
останется невыпол-
ненной, то файл не будет закрыт. На первый взгляд это не страшно, но некоррект-
ное закрытие файлов может привести к потере или порче данных. А если функция
close()
будет вызвана слишком рано, программа попытается работать с
закрытым (то есть недоступным) файлом, что приведет к новым ошибкам. Не всегда можно
заранее определить, когда нужно закрывать файл, но с приведенной конструкцией
Python сделает это за вас. Вам остается лишь открыть файл и работать с ним так,