Взаимодействие с файловой системой позволяет хранить информацию, полученную в результате программы. В этой статье я расскажу об основных функционантах языка программирования Python для работы с файлами.
Встроенные инструменты Python
Основа для работы с файлами – встроенная функция Open ()
open(file, mode="rt")
Эта функция имеет два аргумента. Аргумент Файл
берет строку, содержащую путь к файлу. Второй аргумент ,, Режим
Позволяет указать режим, в котором вы хотите работать с файлом. По умолчанию этот аргумент принимает значение «RT», которое, и некоторые другие можно найти в таблице ниже:
р: | Открывает файл в режиме только для чтения. Начинает чтение с самого начала файла и является режимом по умолчанию для функции Open (). |
РБ: | Открывает файл как только чтение только в двоичном формате и начинает чтение с начала файла. Хотя двоичный формат можно использовать для различных целей, он обычно используется при работе с такими вещами, как изображения, видео и т. Д. |
R +: | Открывает файл для чтения и записи, размещения указателя в начале файла. |
W: | Откроется в режиме только для записи. Указатель размещен в начале файла, и это перезаписывает любой существующий файл с тем же именем. Он создаст новый файл, если один с тем же именем не существует. |
WB: | Открывает файл только для записи в двоичном режиме. |
W +: | Открывает файл для записи и чтения. |
WB +: | Открывает файл для записи и чтения в двоичном режиме. |
A: | Открывает файл для добавления новой информации к нему. Указатель размещен в конце файла. Новый файл создается, если один с тем же именем не существует. |
ab: | Открывает файл для добавления в двоичный режим. |
A +: | Открывает файл для присоединения, так и для чтения. |
AB +: | Открывает файл для присоединения, так и для чтения в двоичном режиме. |
Эти режимы могут быть объединены. Например, “RB “ Открывает двоичный файл для чтения. Объединяя «R +» или «W +», вы можете добиться открытия файла в режиме и чтение и запись одновременно с одним разницей – первый режим бросит исключение, если файл не существует, и работает в Второй режим создаст его в этом случае.
Вы можете начать работать с файлом, используя объект класса доверие TextioWrapper
возвращено функцией Открыть ()
Отказ Этот объект имеет несколько атрибутов, с помощью которых можно получить информацию.
-
Имя
– имя файла; -
Режим
– режим, в котором этот файл открыт; -
Закрыто
– ВозвращаетПравда
Если файл был закрыт.
По завершении работы с файлом он должен быть закрыт с помощью метода Закрыть()
f = open("hello.md", "w") # deal with this file f.close()
Тем не менее, чем больше питоновый способ работы с встроенным файлом – использовать конструкцию с .. как ..
который действует как менеджер по созданию контекста. Пример, написанный выше, может быть переписан с его помощью
with open("hello.md", "w") as f: # deal with this file
Основное отличие состоит в том, что Python закрывает файл самостоятельно, и разработчик не нужно это помнить. И как бонус, никакие исключения не будут брошены, когда файл открыт (например, если файл не существует).
Чтение из файла
Есть несколько подходов, которые вы можете предпринять при открытии файла в читаемых режимах.
Для начала вы можете прочитать весь файл и писать все данные в нем на одной строке.
with open("hello.md", "r") as f: part = f.read(16)
Используя эту функцию с помощью целочисленного аргумента, можно прочитать определенное количество символов.
with open("hello.md", "r") as f: part = f.read(16)
Будут получены только первые 16 символов текста. Важно понимать, что при использовании этой функции несколько раз подряд, деталь с помощью этого текста будет прочитана – виртуальный курсор будет перемещаться по чтению частью текста. Его можно перемещать в определенную позицию, используя метод, если это необходимо искать ().
with open("hello.md", "r") as f: # 'Hello, world!' first_part = f.read(8) # 'Hello, w' f.seek(4) second_part = f.read(8) # 'o, world'
Другой способ состоит в том, чтобы прочитать линию файла по строке. Метод readline ()
Читает строку и, как правило, с помощью метода читается (), перемещает курсор – только сейчас по всей линии. Применение этого метода несколько раз приведет к читанию нескольких строк. Похоже на этот метод, другой метод позволяет читать весь файл, но строка по строке, написав их в список. Этот список можно использовать, например, как итерателен в цикле.
with open("hello.md", "r") as f: for line in f.readlines(): print(line)
Тем не менее, здесь тоже больше питоновый путь. Он состоит в том, что сам объект IO. TextioWrapperhas итератор, который возвращает линию по линии. Благодаря этому нет необходимости читать весь файл, сохраняя его в список, но вы можете динамически прочитать линию файла по строке. И делать это кратко.
with open("hello.md", "r") as f: for line in f: print(line)
Пишите в файл
Функциональность ввода данных в файл не зависит от режима – добавления данных или перезаписи файла. Есть также несколько подходов к выполнению этой операции.
Самый простой и самый логичный – использовать функцию написать()
with open("hello.md", "w") as f: f.write("Hello from write function")
Важно, чтобы только строки могли быть переданы как аргумент на функцию. Если необходимо написать другую информацию, то он должен быть явно отличен в тип строки, используя методы __str __ (Я)
для объектов или отформатированных струн.
Можно написать большое количество данных в файл, если он может быть представлен в виде списка строк.
with open("hello.md", "w") as f: f.writelines("you can put some large data here")
Есть еще одна вещь, которая связана с тем, что функции Написать ()
и Writelines ()
Не помещает автоматически символ перерыва линий, и этот разработчик должен контролировать себя.
Есть еще один, менее известный метод, но, возможно, самый удобный из представленных. И так же странно, как может показаться, он состоит в использовании функции Печать ()
Отказ Сначала это утверждение может показаться странным, потому что это общее знание, что он используется для вывода на консоль. И это правда. Но если вы пройдете файлообъект типа в качестве дополнительного аргумента доверие TextioWrapper
, который является файловым объектом, с которым мы работаем, то выходной поток функции является Печать ()
Перенаправлено с консоли в файл.
with open("hello.md", "w") as f: print("put some data here", file=f)
Сила этого подхода заключается в том, что Печать ()
Вы можете пройти не обязательно строковые аргументы – при необходимости сама функция преобразует их в строковый тип.
Это завершает знакомство с основными функциональными возможностями работы с файлами. В то же время следует сказать, что возможности языка Python не ограничиваются им. Существует большое количество библиотек, которые позволяют работать с определенными типами файлов, а также доставлять более тесное взаимодействие с файловой системой. Вместе они предоставляют разработчикам легко и удобно работать с файлами.
Оригинал: “https://dev.to/b3ns44d/python-file-basics-2kdb”