popov . dev

Главная

Библиотека

Статьи

Обработка файлов...

Обработка файлов в Python

Язык программирования Python - это высокоуровневый и интерпретируемый язык программирования, который был создан Гвидо Ван Россумом в 1989 году. Сегодня он широко используется практически во всех областях и демонстрирует стремительный рост популярности у разработчиков. Это связано со всеми возможностями, которые Python им предоставляет. И обработка файлов - одна из главных функций Python.

Согласно опросу сайта, популярность Python в 2018 году превзошла популярность C# — точно так же, как он превзошел PHP в 2017 году. На платформе GitHub Python превзошел Java в качестве второго по популярности языка программирования: в 2017 году было открыто на 40% больше запросов на загрузку, чем в 2016 году.

В этой статье мы рассмотрим:

  1. Зачем нужна обработка файлов?
  2. Типы файлов, поддерживаемых Python
  3. Файловые операции
  4. Создание текстового файла с помощью Python
  5. Чтение текстового файла с помощью Python
  6. Прохождение файлового объекта
  7. Запись файла
  8. Закрытие файлового потока
  9. Использование ключевого слова with

Зачем нужна обработка файлов?

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

Итак, снова возвращаемся к основам - как мы можем что-то ввести в Python?

  1. Стандартный ввод - обычный ввод с клавиатуры
  2. Аргументы командной строки - указание параметров при запуске приложения

Но допустим, что если бы вам пришлось читать очень много данных, которые нецелесообразно вводить каждый раз? И даже в этом случае нет смысла вводить их постоянно.

Итак, какой самый простой способ сохранить все данные, которые вы хотите, в одном месте и продолжать использовать их до тех пор, пока не будут выполнены ваши задачи? Файлы!

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

Типы файлов, поддерживаемых Python

Какие типы файлов вам приходят в голову первыми? Изображения, аудио, видео, текст, сценарии и многое другое. Зависимость от операционной системы - это самое важное, что следует иметь в виду при выборе типа поддерживаемых файлов.

Windows поддерживает все типы файлов, упомянутые в первой строке. Но поддерживает ли она все типы файлов? Безусловно, нет! Здесь также есть определенные ограничения.

Теперь, переходя к Python, отметим, что в основном существует 2 типа файлов:

  1. Текстовые
  2. Бинарные (двоичные)

Бинарные файлы классифицируются как файлы состоящие из 0 и 1 (двоичная система).

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

Текстовые файлы структурированы в виде последовательности строк, где каждая строка содержит последовательность символов. Это то, что вам известно как код или синтаксис. Каждая строка завершается специальным символом, называемым EOL или символом конца строки.

Файловые операции с использованием Python и CRUD

Какие различные файловые операции вы обычно можете выполнять?

Мы называем это CRUD. CRUD расшифровывается как:

  1. Create (создание)
  2. Read (чтение)
  3. Update (обновление)
  4. Delete (удаление)

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

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

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

Переходим к Python — Создание файла можно выполнить вручную или с помощью Python. На данный момент давайте рассмотрим, что мы будем делать это вручную, перейдя по адресу и создав файл, похожий на текстовый.

Функция open() в Python. Посмотрим, как мы можем открыть файл в Python. Это очень просто — у нас есть встроенная функция, называемая функцией open(), которая используется именно для этой цели. Функция принимает 2 параметра: один из них - имя файла, а другой - режим. Синтаксис:

file_object  = open("filename", "mode")

Итак, что означают эти два параметра? filename - имя файла, который вы хотите открыть. На данный момент это может быть что угодно, а также расширение типа файла. Это важно, поэтому обязательно имейте это в виду. mode - режим открытия файла.

Режимы открытия

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

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

  1. r - режим чтения, который используется, когда файл только считывается
  2. w - режим записи, который используется для редактирования и записи новой информации в файл (все существующие файлы с таким же именем будут удалены при активации этого режима)
  3. a - режим добавления, который используется для добавления новых данных в конец файла; то есть новая информация автоматически добавляется в конец без изменения предыдущей
  4. r+ - специальный режим чтения и записи, который используется для выполнения обоих действий при работе с файлом
Обратите внимание, что вы можете открыть файл в режиме чтения только в том случае, если он существует. Если вы попытаетесь прочитать что-то, чего не существует, Python выдаст вам сообщение об ошибке.

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

file = open("workfile", "wt")  
print(file)

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

Как только мы поместим файл в поток file, можем переходить к вызову функций объектов. Две наиболее распространенные функции - это чтение и запись.

Создание текстового файла с помощью Python

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

Сначала давайте создадим файл в любом простом текстовом редакторе на ваш выбор. Для нашего руководства мы будем называть файл demo.txt. Просто создайте файл и оставьте его пустым. Затем выполните следующий код в Python:

file = open("demo.txt", "w") 
file.write("Привет мир!") 
file.write("Это новый текстовый файл")
file.close()
В результате в нашем файле будет следующее содержание:
Привет мир!Это новый текстовый файл

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

file.write("Привет мир!\n") 

Чтение текстового файла с помощью Python

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

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

file.read() # Не забудьте открыть файл в режиме r

Прочитаем наше файл demo.txt:

file = open("demo.txt", "r")
print(file.read())

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

Привет мир!\nЭто новый текстовый файл

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

file = open("demo.txt", "r")
print(file.read(6)) # Вывод: Привет

Если вам нужно прочитать строку в файле используйте фукцию readline(). Каждый раз, когда вы запускаете этот метод, он возвращает строку символов, содержащую одну строку из файла.

file = open("demo.txt", "r")
print(file.readline()) # Вывод: Привет мир!

Аналогично с функцией read() вы можете передавать в readline() целочисленные арменты, в данном случае из файла будет происходить указаное количество строк.

Но что, если бы мы захотели вернуть каждую строку в файле? Вы бы использовали ту же функцию, только в новой форме. Это называется функцией file.readlines().

Используя функцию readlines() мы получаем на выходе список строк из файла:

['Привет мир!', 'Это новый текстовый файл']

Прохождение файлового объекта в Python

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

file = open("demo.txt", "r")
for line in file:  
    print(line)

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

Запись в файл

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

file = open("demo.txt", "w") 
file.write("Привет мир!") 
file.write("Это новый текстовый файл")
file.close()

Закрытие файлового потока

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

Использование ключевого слова with

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

with open('demo.txt', 'a') as file:
    file.write('Новый текст')

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

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

Комментарии

Для того чтобы оставить свое мнение, необходимо зарегистрироваться на сайте