Главная Веб-разработка Как работать с файлами в Python

Как работать с файлами в Python

от admin

Экспресс-гайд по работе с методами open(), read() и write().

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

С какими файлами можно работать в Python

В Python файлы разделяют на две категории:

  • Текстовые — файлы с текстом, который понятен человеку. К ним относятся документы с расширениями .txt, .csv, .log, .ini, .json, .xml и другими.
  • Бинарные — файлы, данные в которых представлены в виде последовательности байтов. К ним относятся документы с расширениями .jpg, .png, .gif, .docx, .mp4, .exe, .dat и другими. Для работы с такими файлами обычно нужны специальные редакторы. Например, Photoshop для изображений и Final Cut Pro для видео.

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

Как открыть файл

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

open(имя_файла, режим, тип_кодировки)

В ней:

  • имя_файла — относительный (data/input.txt) или абсолютный (C:UsersUserDocumentsmy_file.txt) путь к файлу.
  • режим — строка, определяющая, как именно вы хотите открыть файл. Например, можно сделать его доступным только для чтения, чтобы случайно не удалить данные.
  • тип_кодировки — параметр, который указывает кодировку для текстовых файлов. По умолчанию Python использует системное значение: CP1251 в Windows и UTF-8 в Linux. Если работаете с кириллицей, лучше явно указать UTF-8, чтобы не было проблем с отображением символов на разных платформах.

Режимы работы с файлами

Перечислим основные режимы работы с файлами в Python, которые можно указать в качестве аргумента функции open():

  • ‘r’ — открывает файл для чтения. При этом файл должен существовать, иначе возникает ошибка FileNotFoundError.

file_read = open(‘my_file.txt’, ‘r’)

  • ‘w’ — открывает файл для записи. Если он существует, то Python очистит содержимое, если нет — создаст новый.

file_write = open(‘output.txt’, ‘w’)

  • ‘a’ — записывает данные в конец существующего файла. Если его нет, то Python создаст новый с указанным именем.

file_app = open(‘log.txt’, ‘a’)

  • ‘x’ — создаёт файл с указанным в параметре функции именем.

file_excl = open(‘log.txt’, ‘x’)

  • ‘b’ — даёт возможность работать с бинарными файлами, например с изображениями. Следует указывать вместе с одним из вышеперечисленных режимов открытия: ‘rb’, ‘wb’, ‘ab’ или ‘xb’.

file_binary = open(‘image.jpg’, ‘rb’)

  • ‘+’ — универсальный режим для одновременного чтения и записи. Следует указывать вместе с одним из вышеперечисленных режимов открытия: ‘r+’, ‘w+’, ‘a+’ или ‘x+’.

file_rw = open(‘data.txt’, ‘r+’)

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

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

Чтение файлов

Получить данные из файла можно с помощью функций:

with open(“file.txt”, “r”) as file: content = file.read() # Весь текст в одной строкеwith open(‘file.txt’) as file: line1 = file.readline() # Первая строка print(line1) line2 = file.readline() # Вторая строка print(line2)with open(“file.txt”, “r”) as file: lines = file.readlines()with open(“file.txt”, “r”) as file: for line in file: # Читает файл построчно, не загружая в память целиком print(line.strip())

Запись в файл

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

Читать также:
OpenAI планирует в 2024 году выпустить новую ИИ-модель — GPT Next

with open(“file.txt”, “w”) as file: file.write(“Первая строкаn”) file.write(“Вторая строкаn”)

Особенность функции write() в том, что она работает только со строками. Если в файл надо добавить числа, то не получится обойтись без преобразования типов данных:

file.write(str(42)) # Число → строкаlines = [“Первая строкаn”, “Вторая строкаn”] with open(“file.txt”, “w”) as file: file.writelines(lines) # Записывает все элементы списка

Хотя функцию print() в Python обычно используют для вывода в консоль, с помощью параметра file её можно применить и для записи в файл. Этот способ удобен тем, что символ перехода на новую строку добавляется автоматически.

with open(“file.txt”, “w”) as f: print(“Первая строка”, file=f) print(“Вторая строка”, file=f)

Управление курсором

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

with open(‘file.txt’, ‘r’) as f: print(f) print(f”Начальная позиция: {f.tell()}”) # Выведет 0 first_line = f.readline() print(f”Прочитана строка: ‘{first_line.strip()}’, текущая позиция: {f.tell()}”) # Выведет позицию первого символа второй строки

  • 1 — от текущей позиции курсора;
  • 2 — от конца файла.

Например, вот так можно переместить курсор на 10 байт от начала файла:

with open(‘example.txt’, ‘r’) as file: file.seek(10) # Перемещаем указатель на 10 байт от начала файла data = file.read(5) # Читаем 5 байт с позиции 10

Как закрыть файл

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

В Python файлы закрывают с помощью функции close():

# Открываем файл file = open(‘example.txt’, ‘r’) # Вносим изменения file.close() # Закрываем файл

Для удобства можно использовать конструкцию with open(…) as — она автоматически закрывает файлы, а код с ней становится чище и понятнее. Вот как пользоваться этой конструкцией:

with open(‘example.txt’, ‘r’) as f: content = f.read() print(content)

Как управлять файлами в ОС

В Python можно не только читать и записывать файлы, но и создавать, удалять, переименовывать, копировать и перемещать их. Всё это делается с помощью модулей os, shutil, pathlib.

Список основных функций для управления файлами с помощью Python:

  • os.path.exists(‘имя_файла’) — проверяет, существует ли документ с указанным именем;
  • os.remove(‘имя_файла’) — удаляет документ;
  • os.rename(‘старое_имя’, ‘новое_имя’) — переименовывает документ.
  • shutil.move(‘старая_папка/file.txt’, ‘новая_папка/file.txt’) — перемещает файл из одной папки в другую.
  • os.listdir(‘папка’) — выводит содержимое папки.

Для примера напишем программу, которая создаёт файл, копирует его и удаляет оригинал:

import os import shutil # Создаём файл original.txt и записываем в него строку file_path = ‘original.txt’ with open(file_path, ‘w’) as f: f.write(“Это оригинальный файл.n”) # Проверяем, существует ли файл if os.path.exists(file_path): print(“Файл успешно создан:”, file_path) # Копируем файл shutil.copy(file_path, ‘copy.txt’) print(“Файл скопирован как copy.txt”) # Переименовываем копию os.rename(‘copy.txt’, ‘renamed_copy.txt’) print(“Файл переименован в renamed_copy.txt”) # Удаляем оригинальный файл os.remove(file_path) print(“Оригинальный файл удалён”) # Проверяем, существует ли переименованная копия файла if os.path.exists(‘renamed_copy.txt’): print(“Копия файла существует!”)

Что запомнить

  • В Python можно работать как с текстовыми, так и с бинарными файлами, а все функции для этого доступны в стандартной библиотеке.
  • Перед тем как вносить изменения в файл, его надо открыть с помощью функции open(). В качестве аргумента следует указать режим работы с документом. Он определяет, какие именно функции после этого можно будет применять к файлу.
  • После работы с документом надо обязательно закрыть файл с помощью функции close(). Если этого не сделать, данные могут не сохраниться.
  • В Python-модулях os, shutil, pathlib есть функции для работы с файловой системой. С их помощью можно создавать документы и папки, копировать их, удалять и переименовывать.

Похожие статьи