Глава 10 • Файлы и исключения
как требуется, надеясь на то, что Python закроет его автоматически при завершении
блока
with
.
После того как в программе появится объект, представляющий файл
pi_digits .txt
, во
второй строке программы используется метод
read()
, который читает все содер-
жимое файла и сохраняет его в одной длинной строке в переменной
contents
. При
выводе значения
contents
на экране появляется все содержимое файла
:
3.1415926535
8979323846
2643383279
Единственное различие между выводом и исходным файлом — лишняя пустая
строка в конце вывода. Откуда она взялась? Метод
read()
возвращает ее при чте-
нии, если достигнут конец файла. Если вы хотите удалить лишнюю пустую строку,
включите вызов
rstrip()
в вызов
print()
:
with open('pi_digits.txt') as file_object:
contents = file_object.read()
print(contents.rstrip())
Напомним, что метод
rstrip()
удаляет все пропуски в конце строки. Теперь вывод
точно соответствует содержимому исходного файла:
3.1415926535
8979323846
2643383279
Пути к файлам
Если передать функции
open()
простое имя файла, такое как
pi_digits .txt
, Python
ищет файл в том каталоге, в котором находится файл, выполняемый в настоящий
момент (то есть файл программы
.py
).
В некоторых случаях (в зависимости от того, как организованы ваши рабочие
файлы) открываемый файл может и не находиться в одном каталоге с файлом
программы. Например, файл программы может находиться в каталоге
python_work
;
в каталоге
python_work
создается другой каталог с именем
text_files
для текстовых
файлов, с которыми работает программа. И хотя папка
text_files
находится в
python_
work
, простая передача
open()
имени файла из
text_files
не подойдет, потому что
Python произведет поиск файла в
python_work
и на этом остановится; поиск не будет
продолжен во вложенном каталоге
text_files
. Чтобы открыть файлы из каталога, от-
личного от того, в котором хранится файл программы, необходимо указать
путь —
то есть приказать Python искать файлы в конкретном месте файловой системы.
Так как каталог
text_files
находится в
python_work
, для открытия файла из
text_files
можно воспользоваться
относительным путем. Относительный путь приказывает
Python искать файлы в каталоге, который задается
относительно каталога, в ко-
тором находится текущий файл программы. Например, это может выглядеть так:
with open('text_files/
имя_файла .txt') as file_object:
Чтение из файла
199 Эта строка означает, что файл
.txt
следует искать в каталоге
text_files
; она предпо-
лагает, что каталог
text_files
находится в
python_work
(так оно и есть).