Рубріки: Back-endОсновы

Работа с файлами в Python: функции чтение, запись в файл

Дмитро Сімагін

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

Любая программа, написанная на языке Python, имеет не только функциональную часть — она также оптимизирована для работы с файлами. К примеру, при написании бота, автоматически отвечающего за запросы пользователя, придется добавить в него заранее подготовленные ответы в отдельном текстовом документе. Разрабатываете приложение для редактирования изображений — тогда код должен выполнять обработку файлов, загруженных пользователем. Чтобы все это реализовать, вы обязаны знать, как работать с файлами на языке Python, и какие для этого нужны функции.

Файл. Что это?

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

При работе с файлами наиболее часто используемыми командами будет: 

  • открытие;
  • чтение;
  • запись;
  • закрытие;
  • удаление.

Теперь пришло время изучить, как все это выполнять. 

Открываем файл для чтения и записи в Python

Что открыть файл в Python применяется функция open(). Ниже вы видите фрагмент кода, объясняющий эту команду: 

file = open('doc.txt', 'r')  # 'r'

 

В конце строки кода можно заметить аргумент # ‘r’. Его присутствие означает, что документ открыт только для чтения. При необходимости вы можете изменить этот аргумент, добавив вместо него ‘w’. Это означает, что файл доступен не только для чтения, но и для записи. 

Характерной особенностью синтаксиса Python является то, что после открытия и работы с файлом его приходится закрывать командой file.close(). Закрытие можно автоматизировать с помощью контекстного менеджера with: 

with open(doc.txt', 'r') as file:
    content = file.read()
    print(content)

 

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

При написании команды открытия файла вы можете указать его кодировку: 

with open('doc.txt', 'w+', encoding='Windows-1251') as f:

 

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

f = open('doc.txt', 'w+', encoding='Windows-1251')
# тут мы что-то делаем
f.close()

 

Как читать данные файла в Python

Чтение данных в Python реализуется функцией read(). Перед вами фрагмент кода, который это демонстрирует: 

file.read(size)

 

Здесь file показывает объект для дальнейшего чтения, а параметр size — сколько символов нужно прочитать. Если параметр не указывать, то пользователь сможет прочитать все данные из этого файла. 

Давайте сейчас создадим файл highload.txt и запишем в него строку «Welcome to My Page!». Теперь прочитаем первые семь символов из этого файла: 

with open('highload.txt', 'r', encoding='Windows-1251') as f:
    data = f.read(7)
print(data)
>>> Welcome to My Page!

 

После запуска кода Python отображает лишь первое слово «Welcome» — первые семь символов строки «Welcome to My Page!» в highload.txt. 

Если же во фрагменте кода не указывать аргументы после функции read(), то Python покажет всю информацию. В данном случае, всю строку «Welcome to My Page!». 

Информацию можно читать построчно при помощи функции readline(). К примеру, в нашем файле присутствуют четыре строки:

  • Apple
  • Plum
  • Banana
  • Strawberry

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

with open('highload.txt', 'r', encoding='Windows-1251') as f:
print(f.readline())
>>> Apple

 

Как видите, Python отобразил только первую строку из этого списка. При неоднократном вызове readline() вы сможете прочитать все остальные строки: 

with open('highload.txt', 'r', encoding='Windows-1251') as f:
print(f.readline())
print(f.readline())
print(f.readline())
print(f.readline())
>>> Apple
>>> Plum
>>> Banana
>>> Strawberry

 

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

with open('highload.txt', 'r', encoding='Windows-1251') as f:
for line in f:
print(line)
>>> Apple
>>> Plum
>>> Banana
>>> Strawberry

 

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

with open('highload.txt', 'r', encoding='Windows-1251') as f:
data = f.readlines()
print(data)
>>> ['Apple\n', 'Plum\n', 'Banana\n', 'Strawberry']

 

Альтернативой может стать конструктор списков list(): 

with open('highload.txt', 'r', encoding='Windows-1251') as f:
data = list(f)
print(data)
>>> ['Apple\n', 'Plum\n', 'Banana\n', 'Strawberry']

 

Если документ слишком велик, то рекомендуется не перегружать оперативку в ПК, а считывать его по частям. 

Как на Python сделать запись в файл

Чтобы выполнить запись в файл на Python, нужны функции write() и open() с режимами записи (‘w’, ‘a’, ‘w+’, ‘a+’). Давайте рассмотрим несколько примеров: 

1. Запись (‘w’)

Режим ‘w’ — запись (если файл существует, его содержимое будет удалено). 

with open('highload.txt', 'w') as file:
file.write("Welcome to My Page!!\n")
file.write("2024.\n")

 

2. Добавление (‘a’)

Режим ‘a’ — добавление данных (добавляет данные в конец файла). 

with open('highload.txt', 'a') as file:
file.write("New Year.\n")

 

3. Запись и чтение в одном файле (‘w+’)

Режим ‘w+’ — запись и чтение (файл будет очищен, если он существует). 

with open('highload.txt', 'w+') as file:
file.write("Writing and reading in the same file.\n")
file.seek(0)  # перемещаем курсор в первую строку
content = file.read()  # считываем данные
print("More text here:")
print(content)

 

4. Добавление с возможностью чтения (‘a+’)

Режим ‘a+’ — добавление и чтение (добавляет данные в конец файла). 

with open('highload.txt', 'a+') as file:
file.write("New Year.\n")
file.seek(0)
content = file.read()
print("More text here after adding:")
print(content)

 

Работа с файловой системой в Python

Работа с файловой системой — неотъемлемая часть обязанностей любого джуниора. Поначалу придется учиться обрабатывать данные из файлов, сохранять их или управлять структурой каталогов. Поскольку мы уже знаем, как открывать и закрывать файлы в Python, и как записывать в них данные, теперь на нужно ознакомиться с другими файловыми операциями, которые могут понадобиться новичку. 

Работа с папками

В синтаксисе Python имеется специальный модуль os для работы с файловой системой. Вот пару примеров, как он используется. 

Создание новой папки: 

import os 
os.mkdir('new_folder')

 

Проверка наличия файла или папки:

if os.path.exists('highload.txt'):
print("Файл существует")

 

Получение списка файлов в директории:

files = os.listdir('.')
print("Файлы в текущей директории:", files)

 

Удаление файла или папки:

os.remove('highload.txt')  # Удаляет файл
os.rmdir('new_folder')  # Удаляет пустую папку

 

Работа с путями

Применяя модуль os.path, можно работать с путями к файлам и папкам. Перед нами пример, как получить абсолютный путь:

import os
abs_path = os.path.abspath('highload.txt')
print("Абсолютный путь к файлу:", abs_path)

 

Пример комплексного использования

В этом примере создается новая папка, в ней записывается файл, а затем читаются его данные:

import os

# Создаем новую папку
os.mkdir('test_folder')

# Путь к файлу
file_path = os.path.join('test_folder', 'highload.txt')

# Запись в файл
with open(file_path, 'w') as file:
file.write("Hello from the new folder!")

# Чтение из файла
with open(file_path, 'r') as file:
content = file.read()
print("Содержимое файла:")
print(content)

# Удаление файла и папки
os.remove(file_path)
os.rmdir('test_folder')

 

В вышеуказанном примере Python создает папку test_folder, затем записывает в ней файл highload.txt, читает его, а затем удаляет, как файл, так и всю папку. 

Заключение

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

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

Останні статті

Что такое прокси-сервер: пояснение простыми словами, зачем нужны прокси

Прокси (proxy), или прокси-сервер — это программа-посредник, которая обеспечивает соединение между пользователем и интернет-ресурсом. Принцип…

21.11.2024

Что такое PWA приложение? Зачем необходимо прогрессивное веб-приложение

Согласитесь, было бы неплохо соединить в одно сайт и приложение для смартфона. Если вы еще…

19.11.2024

Как создать игру на телефоне: программирование с помощью конструктора

Повсеместное распространение смартфонов привело к огромному спросу на мобильные игры и приложения. Миллиарды пользователей гаджетов…

17.11.2024

Google Bard: эффективный аналог ChatGPT

В перечне популярных чат-ботов с искусственным интеллектом Google Bard (Gemini) еще не пользуется такой популярностью…

14.11.2024

Скрипт и программирование: что это такое простыми словами

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

12.11.2024

Дедлайн в разработке: что это такое простыми словами

Дедлайн (от англ. deadline — «крайний срок») — это конечная дата стачи проекта или задачи…

11.11.2024