Рубріки: Теория

Работа с файлами в Python: основы

Роман Андреев

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

Типы файлов

Особые комбинации данных, записанные в последовательностях битов, называются файлами. Информация в них оформлена, структурирована и обладает собственным именем.

В Python выделяют два типа файлов:

  • Текстовые включают в себя то, что может прочесть человек. Открыть их можно, запустив блокнот или другие классические редакторы. Обычно такие файлы имеют расширение .txt или .rtf.
  • Бинарные типы выводятся в закодированном формате, то есть с использованием «0» и «1». Они представляют собой комбинации битов и хранятся в расширении .bin.

Операции с файлами

Существует несколько вариантов действий с файлами. Рассмотрим основные операции:

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

Давайте разберем каждую из них.

Открытие

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

  • file — название файла, где также прописывается к нему путь ;
  • mode — запуск, при котором по умолчанию установлен режим «только для чтения».

В системе предусмотрен ряд режимов для открытия, среди которых:

  • для чтения или записи;
  • для чтения и записи;
  • запуск для присоединения новой информации.

Каждый из этих режимов может обладать текстовым и бинарным вариантами. Во втором случае к буквенному указателю добавляется буква «b». Эти режимы могут комбинироваться.

Режим Возможности
r Только чтение
w Запись. Если не найден, то создается новый
x Запись. Если не найден, вызывается исключение
a Запись. Не стирает данные, а добавляет в конец
t Открытие в формате текстового файла
b Открытие в виде бинарного файла
+ Работа в варианте и записи, и чтения

После открытия файла сгенерируется особый файловый объект и вы сможете получить о нем сведения. Для этого существуют специальные атрибуты:

  • .name – содержит в себе имя;
  • .closed – показывает, закрыт ли документ;
  • .mode – отображает вариант доступа;
  • .softspace – определяет необходимость добавления пробела.

Синтаксис метода выглядит следующим образом:

f = open(file_name, access_mode)

или

f = open('exmp.txt','r')

Чтение

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

Метод read() предназначен для чтения файла, запущенного в варианте «только для чтения». Он принимает в качестве аргумента число символов, которые требуется прочесть. То есть, если вы передадите цифру 10, то будут отображены только первые 10 знаков.

Например:

f = open('exmp.txt','r')

f.read(10)

Следующей функцией будет readline(). Она получает содержимое документа по строкам и подходит для больших объемов. Здесь также существует удобный способ, позволяющий не считывать весь файл полностью, а обращаться только к нужным строкам. Это возможно благодаря объекту io.TextIOWrapper.

Запись

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

Метод write() может записывать и большие объемы информации. Для этого нужно представить их в виде списка строк. Аналогично функции считывания, для записи существует построчный вариант writelines(). Python самостоятельно не расставляет переносы, поэтому продумать этот момент лучше заранее.

Пример синтаксиса:

f = open('exmp.txt','w') 

f.write('Привет Мир')

f.close()

Менее популярным, но при этом одним из наиболее удобных способов записи можно назвать метод print(). Он выводит информацию в консоль, но если передавать в необязательный аргумент тип объекта file, то поток будет перенаправляться из консоли напрямую в файл. Главным достоинством такого подхода можно считать то, что метод print() принимает не только строковые данные. Это значит, что при необходимости он самостоятельно конвертирует информацию.

Python позволяет указывать позицию нахождения в файле. После первичного обращения вы можете получить пустую строку. Это случается из-за того, что указатель перемещен в конец. Для точного определения его позиции предусмотрен метод tell(), который говорит, в каком количестве байт от начала он расположен в данный момент. Затем можно воспользоваться методом seek(), который переведет нас на требуемую позицию. В нем также следует указывать количество байт, при этом 0 определяет начало файла, 1 – текущую позицию, 2 – конец.

Изменение названия

Еще одной возможностью при работе с файлами будет изменение их названия. Для этого используется rename(), но предварительно необходимо импортировать специальный модуль os.

Например:

import os

os.rename(exmp,file) # где exmp – изначальное имя файла, а file – новое

Закрытие

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

  • метод close(), прописанный после всех необходимых действий;
  • метод try/finally — при появлении операций с исключениями файл будет автоматически закрыт;
  • инструкция with/as, упрощающая обработку исключений, поэтому метод close() в этом случае будет не нужен.

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

Синтаксисы вариантов закрытия оформляются в следующем виде:

  • для метода close():
f = open('exmp.txt','r')

f.close()
  • для комбинации try/finally:
f = open('exmp.txt','r')

try:

#код

finally:

f.close()
  • для инструкции with/as:
with open('exmp.txt') as f:

    #код

Ошибки

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

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

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

Обучение Power BI – какие онлайн курсы аналитики выбрать

Сегодня мы поговорим о том, как выбрать лучшие курсы Power BI в Украине, особенно для…

13.01.2024

Work.ua назвал самые конкурентные вакансии в IТ за 2023 год

В 2023 году во всех крупнейших регионах конкуренция за вакансию выросла на 5–12%. Не исключением…

08.12.2023

Украинская IT-рекрутерка создала бесплатный трекер поиска работы

Unicorn Hunter/Talent Manager Лина Калиш создала бесплатный трекер поиска работы в Notion, систематизирующий все этапы…

07.12.2023

Mate academy отправит работников в 10-дневный оплачиваемый отпуск

Edtech-стартап Mate academy принял решение отправить своих работников в десятидневный отпуск – с 25 декабря…

07.12.2023

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

Служба безопасности Украины задержала в Киеве 46-летнего программиста, который за деньги устанавливал шпионские программы и…

07.12.2023

Как вырасти до сеньйора? Девелопер создал популярную подборку на Github

IT-специалист Джордан Катлер создал и выложил на Github подборку разнообразных ресурсов, которые помогут достичь уровня…

07.12.2023