ГЛАВА 13. РАБОТА С ФАЙЛАМИ В PYTHON

Чаще всего данные для обработки поступают из внешних источников – файлов. Существуют различные форматы файлов, наиболее простой и универсальный – текстовый. Он открывается в любом текстовом редакторе (например, Блокноте). Расширения у текстовых файлов: .txt, .html, .csv (их достаточно много).

Помимо текстовых есть другие типы файлов (музыкальные, видео, .doc, .ppt и пр.), которые открываются в специальных программах (музыкальный или видео проигрыватель, MS Word и пр.).

В этой главе остановимся на текстовых файлах, хотя возможности Python этим не ограничиваются.

Выполните несколько шагов.

  1. Создайте каталог (папку) file_examples.
  2. С помощью (например, Блокнота) создайте в каталоге file_examples текстовый файл example_text.txt, содержащий следующий текст:

First line of text
Second line of text
Third line of text

  1. Создайте в каталоге file_examples файл file_reader.py, содержащий исходный текст программы на языке Python:

file = open(‘example_text.txt’, ‘r’)
contents = file.read()
print(contents)
file.close()

Получится примерно следующее:

Запустим программу file_reader.py:

Небольшие комментарии к исходному тексту:

Рассмотренный подход по работе с файлами в Python перешел из языка С.

По умолчанию, если не указывать режим открытия, то используется открытие на «чтение». Файлы особенно подвержены ошибкам во время работы с ними. Диск может заполниться, пользователь может удалить используемый файл во время записи, файл могут переместить и т.д. Эти типы ошибок можно перехватить с помощью обработки исключений:

Запустим программу:

В дальнейшем для работы с файлами мы будем использовать менеджер контекста (инструкцию with41), который не требует ручного освобождения ресурсов. Перепишем предыдущий пример с использованием менеджера контекста:

Выполним программу:

Исходный текст заметно упростился, т.к. освобождение ресурсов в этом случае происходит автоматически (внутри менеджера контекста).

Каким образом Python определяет, где искать файл для открытия? В момент вызова функции open Python ищет указанный файл в текущем рабочем каталоге. В момент запуска программы текущий рабочий каталог там, где сохранена программа.

Определить текущий рабочий каталог можно следующим образом:

Если файл находится в другом каталоге, то необходимо указать путь к нему:

  1. абсолютный путь (начиная с корневого каталога): ‘C:\Users\Dmitriy\data1.txt’
  2. относительный путь (относительно текущего рабочего каталога, см. рисунок ниже): ‘data\data1.txt’

На следующем рисунке текущий рабочий каталог ‘C:\Users\Dmitriy\home’

Далее рассмотрим некоторые способы чтения содержимого файла.

В следующем примере происходит чтение содержимого всего файла, начиная с текущей позиции курсора (перемещает курсор в конец файла):

Результат выполнения:

Следующий пример демонстрирует работу с курсором:

Результат работы программы:

Если необходимо получить список, состоящий из строк, то можно воспользоваться методом readlines:

Результат работы программы:

Для демонстрации следующего примера создайте файл plan.txt, содержащий следующий текст:

Mercury
Venus
Earth
Mars
Jupiter
Saturn
Uranus
Neptune

Далее запустим программу (с учетом текущего рабочего каталога!):

В результате выполнения получим:

Комментарии к исходному тексту приведены на следующем рисунке:

Используйте следующий способ чтения из файла, если хотите сделать некоторые операции с каждой из строк, начиная с текущей позиции файлового курсора до конца файла:

Результат выполнения:

Следующий пример производит запись строки в файл. Если файла с указанным именем в рабочем каталоге нет, то он будет создан, если файл с таким именем существует, то он будет ПЕРЕЗАПИСАН:

Для добавления строки в файл необходимо открыть файл в режиме «a» (сокр. от append):