Чтение и запись файлов в Python

Некоторые данные должны быть временными, храниться в ОЗУ во время работы приложения, а затем забываться. Однако другие должны быть постоянными. Они сохраняются на жестком диске для дальнейшего использования, и зачастую именно они больше всего заботят пользователя.

Программисты очень часто пишут код для чтения и записи файлов, но каждый язык решает эту задачу по-своему. В этой статье мы расскажем, как работать с файлами при помощи Python.

Установка Python

Скорее всего, у вас уже установлен Python. Если нет, вы можете установить его из репозитория программного обеспечения вашего дистрибутива. Например, в CentOS Stream или RHEL выполните следующую команду:

$ sudo dnf install python3

В macOS вы можете установить Python из MacPorts или Homebrew. В Windows вы можете установить Python из Chocolatey.

После установки Python откройте свой любимый текстовый редактор и приготовьтесь писать код.

Запись данных в файл с помощью Python

Если вам нужно записать данные в файл, следует сделать три главных шага:

  1. Открыть файл
  2. Записать в него данные
  3. Закрыть файл

В общем-то, это точно такая же последовательность шагов, которую вы используете при написании кода, редактировании фотографий или выполнении практически любых операций на компьютере. Сначала вы открываете документ, который хотите отредактировать, затем вносите некоторые изменения, а затем закрываете документ.

В Python данный процесс будет выглядеть следующим образом:

f = open('example.txt', 'w')
f.write('hello world')
f.close()

В этом примере первая строка открывает файл в режиме записи. Файл представлен как переменная f, что является произвольным выбором. Мы используем f, потому что это общепринятая практика в написании кода на Python. Однако любое другое допустимое имя переменной работает так же.

Есть разные режимы, в которых вы можете открыть файл:

  • w — для записи данных
  • r+ — для чтения и записи
  • a — только для добавления данных

Вторая строка в нашем коде записывает данные в файл. Данные, записанные в этом примере, представляют собой обычный текст, но вы можете записывать что угодно.

Последней строкой мы закрываем файл.

Запись данных с использованием конструкции with

Существует более короткий способ записи данных в файл, и этот метод может быть полезен для быстрого взаимодействия с файлами. Он не оставляет файл открытым, поэтому вам не нужно вызывать функцию close() после того, как вы выполнили все действия с файлом. Этот способ записи данных предполагает использование конструкции with:

with open('example.txt', 'a') as f:
    f.write('hello pythonist')

Чтение данных из файла с помощью Python

Допустим, вы (или ваш пользователь посредством вашего приложения) поместили данные в файл, и ваш код должен их получить. Тогда перед вами стоит цель – прочитать файл. Логика чтения такая же, как логика записи:

  1. Открыть файл
  2. Прочесть данные
  3. Закрыть файл

Опять же, этот логический поток отражает то, что вы и так делаете постоянно, просто используя компьютер (или читая книгу, если на то пошло). Чтобы прочитать документ, вы открываете его, читаете и закрываете. С компьютерной точки зрения «открытие» файла означает загрузку его в память.

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

f = open('example.tmp', 'r')

for line in f:
    print(line)

f.close()

В первой строке данного примера мы открываем файл в режиме чтения. Файл обозначаем переменной f, но, как и при открытии файлов для записи, имя переменной может быть произвольным. В имени f нет ничего особенного – это просто кратчайший из возможных способов представить слово file, поэтому программисты Python часто используют его.

Во второй строке мы резервируем line (еще одно произвольное имя переменной), для представления каждой строки f. Это сообщает Python, что нужно выполнить итерацию по строкам нашего файла и вывести каждую из них на экран.

Чтение файла с использованием конструкции with

Как и при записи данных, существует более короткий метод чтения из файлов с использованием конструкции with. Поскольку здесь не требуется вызов функции call(), это более удобно для быстрого взаимодействия.

with open('example.txt', 'r') as f:
    for line in f:
        print(line)

Заключение

Сегодня мы поговорили про чтение и запись файлов с помощью Python. Есть много различных способов записи данных в файлы с помощью Python и множество способов форматирования текста, который вы пишете в файлы, с помощью JSON, YAML, TOML и т.д. Также есть очень хороший встроенный метод для создания и поддержки базы данных SQLite и множество библиотек для обработки любого количества форматов файлов, включая графику, аудио, видео и многое другое.

Возможно, вам также будет интересно:

Перевод статьи «Reading and writing files with Python».