Чаще всего данные для обработки поступают из внешних источников – файлов. Существуют различные форматы файлов, наиболее простой и универсальный – текстовый. Он открывается в любом текстовом редакторе (например, Блокноте). Расширения у текстовых файлов: .txt, .html, .csv (их достаточно много).
Помимо текстовых есть другие типы файлов (музыкальные, видео, .doc, .ppt и пр.), которые открываются в специальных программах (музыкальный или видео проигрыватель, MS Word и пр.).
В этой главе остановимся на текстовых файлах, хотя возможности Python этим не ограничиваются.
Выполните несколько шагов.
- Создайте каталог (папку) file_examples.
- С помощью (например, Блокнота) создайте в каталоге file_examples текстовый файл example_text.txt, содержащий следующий текст:
First line of text
Second line of text
Third line of text
- Создайте в каталоге 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 ищет указанный файл в текущем рабочем каталоге. В момент запуска программы текущий рабочий каталог там, где сохранена программа.
Определить текущий рабочий каталог можно следующим образом:
Если файл находится в другом каталоге, то необходимо указать путь к нему:
- абсолютный путь (начиная с корневого каталога): ‘C:\Users\Dmitriy\data1.txt’
- относительный путь (относительно текущего рабочего каталога, см. рисунок ниже): ‘data\data1.txt’
На следующем рисунке текущий рабочий каталог ‘C:\Users\Dmitriy\home’
Далее рассмотрим некоторые способы чтения содержимого файла.
В следующем примере происходит чтение содержимого всего файла, начиная с текущей позиции курсора (перемещает курсор в конец файла):
Результат выполнения:
Следующий пример демонстрирует работу с курсором:
Результат работы программы:
Если необходимо получить список, состоящий из строк, то можно воспользоваться методом readlines:
Результат работы программы:
Для демонстрации следующего примера создайте файл plan.txt, содержащий следующий текст:
Mercury
Venus
Earth
Mars
Jupiter
Saturn
Uranus
Neptune
Далее запустим программу (с учетом текущего рабочего каталога!):
В результате выполнения получим:
Комментарии к исходному тексту приведены на следующем рисунке:
Используйте следующий способ чтения из файла, если хотите сделать некоторые операции с каждой из строк, начиная с текущей позиции файлового курсора до конца файла:
Результат выполнения:
Следующий пример производит запись строки в файл. Если файла с указанным именем в рабочем каталоге нет, то он будет создан, если файл с таким именем существует, то он будет ПЕРЕЗАПИСАН:
Для добавления строки в файл необходимо открыть файл в режиме «a» (сокр. от append):