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

Введение Существует неписаный консенсус в отношении того, что Python - один из лучших начальных языков программирования [/ why-beginners-should-learn-python /] для изучения как новичок. Он чрезвычайно универсален, легко читается / анализируется и довольно приятен для глаз. Язык программирования Python отличается высокой масштабируемостью и широко считается одним из лучших наборов инструментов для создания инструментов и утилит, которые вы, возможно, захотите использовать по разным причинам. В этой статье будет кратко описано, как Python обрабатывает одну из самых важных

Вступление

Неписаный консенсус в том, что Python - один из лучших начальных языков программирования для изучения новичком. Он чрезвычайно универсален, легко читается / анализируется и довольно приятен для глаз. Язык программирования Python отличается высокой масштабируемостью и широко считается одним из лучших наборов инструментов для создания инструментов и утилит, которые вы, возможно, захотите использовать по разным причинам.

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

Ключевые функции, используемые для обработки файлов в Python: open() , close() , read() , write() и append() .

Открытие файлов с помощью open()

Эта функция возвращает файловый объект, называемый «дескриптором», который используется для чтения и записи в файл. Аргументы, которые может получить функция, следующие:

 open(filename, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) 

Обычно требуются только параметры filename и mode , в то время как другие используются неявно с их значениями по умолчанию.

Следующий фрагмент кода показывает, как можно использовать эту функцию:

 file_example = open ("TestingText.txt") 

Это откроет текстовый файл под названием «TestingText» в режиме только для чтения. Обратите внимание, что был указан только параметр имени файла, это связано с тем, что режим «чтения» является режимом по умолчанию для функции открытия.

Доступны следующие режимы доступа для функции open() :

  • r : открывает файл в режиме только для чтения. Начинает чтение с начала файла и является режимом по умолчанию для функции open() .
  • rb : открывает файл только для чтения в двоичном формате и начинает чтение с начала файла. Хотя двоичный формат может использоваться для разных целей, он обычно используется при работе с такими вещами, как изображения, видео и т. Д.
  • r+ : открывает файл для чтения и записи, помещая указатель в начало файла.
  • w : открывается в режиме только для записи. Указатель помещается в начало файла, и это перезаписывает любой существующий файл с тем же именем. Он создаст новый файл, если файл с таким же именем не существует.
  • wb : открывает файл только для записи в двоичном режиме.
  • w+ : открывает файл для записи и чтения.
  • wb+ : открывает файл для записи и чтения в двоичном режиме.
  • a : открывает файл для добавления к нему новой информации. Указатель помещается в конец файла. Если файл с таким же именем не существует, создается новый файл.
  • ab : открывает файл для добавления в двоичном режиме.
  • a+ : открывает файл как для добавления, так и для чтения.
  • ab+ : открывает файл как для добавления, так и для чтения в двоичном режиме.

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

 file_example = open ("F:\\Directory\\AnotherDirectory\\tests\\TestingText.txt") 

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

Чтобы избежать этой проблемы, рекомендуется перехватывать ошибки с помощью блока try-finally для обработки исключения, как показано ниже.

 try: 
 file_example = open ("F:\\Directory\\AnotherDirectory\\tests\\TestingText.txt") 
 except IOError: 
 print("An error was found. Either path is incorrect or file doesn't exist!") 
 
 finally: 
 print("Terminating process!") 

Чтение из файлов с помощью read()

Python содержит 3 функции для чтения файлов: read() , readline() и readlines() . Последние две функции являются просто вспомогательными функциями, которые упрощают чтение определенных типов файлов.

Для примеров, которые будут использоваться, "TestingText.txt" содержит следующий текст:

 Hello, world! Python is the way to coding awesomeness. 
 
 If you don't believe me, try it on your own. 
 
 Come, you will enjoy the Dark Side. We have cookies! 

Метод чтения используется следующим образом:

 file_example = open ("F:\\Directory\\AnotherDirectory\\tests\\TestingText.txt", "r") 
 
 print(file_example.read()) 

Результат будет следующим:

 Hello, world! Python is the way to coding awesomeness. 
 
 If you don't believe me, try it on your own. 
 
 Come, you will enjoy the Dark Side. We have cookies! 

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

 file_example = open ("F:\\Directory\\AnotherDirectory\\tests\\TestingText.txt", "r", encoding="utf8" ) 

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

 file_example = open ("F:\\Directory\\AnotherDirectory\\tests\\TestingText.txt", "r") 
 
 print(file_example.read(8)) 

Результат будет следующим:

 Hello, w 

Вспомогательная функция readline() ведет себя аналогичным образом, но вместо того, чтобы возвращать весь текст, она вернет одну строку.

 file_example = open ("F:\\Directory\\AnotherDirectory\\tests\\TestingText.txt", "r") 
 
 print(file_example.readline()) 
 print(file_example.readline(5)) 

В приведенном выше сценарии первая print() возвращает первую строку и вставляет пустую строку в консоль вывода. Следующий print() отделяется от предыдущей строки пустой строкой и начинается с новой строки, как показано в выходных данных:

 Hello world! Python is the way to coding awesomeness. 
 
 If yo 

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

 print(file_example.readlines()) 

Результатом этого кода будет:

 Hello world! Python is the way to coding awesomeness. If you don't believe me, try it on your own. Come, you will enjoy the Dark Side. We have cookies! 

Имейте в виду, что функция readlines() считается намного более медленной и неэффективной, чем read() , но без особых преимуществ. Хорошей альтернативой этому является использование цикла, который будет работать намного плавнее и быстрее:

 file_example = open ("F:\\Directory\\AnotherDirectory\\tests\\TestingText.txt", "r") 
 
 for lines in file_example: 
 print(lines) 

Обратите внимание, что если строка не печатается, она будет заменена в буфере следующим оператором.

Запись в файлы с помощью write()

При использовании этой функции любая информация внутри файла с таким же именем будет перезаписана. Ее поведение похоже на read() , но она скорее вставляет информацию, чем читает ее.

 file_example2 = open ("F:\\Directory\\AnotherDirectory\\tests\\TestingTextTwo.txt", "w") 
 
 file_example2.write("This is a test. Enjoy it!\n") #'\n' is for change line. 
 
 file_example2.write("Another thing to know is doing it slowly.\n") 
 
 file_example2.write("One by one. Yay!") 

Если необходимо написать несколько строк, вместо этого можно использовать writelines()

 listOfThingsToSay = ["I like things like: \n", "Ice Cream\n", "Fruits\n", "Movies\n", "Anime\n", "Naps\n", "Jerky\n"] 
 
 file_example2 = open ("F:\\Directory\\AnotherDirectory\\tests\\TestingTextTwo.txt", "w") 
 
 file_example2.writelines(listOfThingsToSay) 

Примечание : чтобы использовать print() , необходимо установить режим w+ , что позволяет читать и писать.

Добавление в файлы с помощью append()

Эта функция действует аналогично функции write() , однако вместо перезаписи файла append() добавляет содержимое в существующий файл.

Если текстовый файл с именем "TestingTextThree" содержит следующую информацию:

 Some essential things are missing in life and should not be avoided. 

Чтобы добавить новый текст, можно использовать следующий код:

 listOfThingsDo = ["You need at least to: \n", "Eat fried Ice Cream\n", "Go to Disney\n", "Travel to the moon\n", "Cook Pineapple Pizza\n", "Dance Salsa\n"] 
 
 file_example3 = open ("F:\\Directory\\AnotherDirectory\\tests\\TestingTextThree.txt", "a+") 
 
 file_example3.writelines(listOfThingsToDo) 
 
 for newline in file_example3 
 print(newlines) 

Результат будет следующим:

 Some essential things are missing in life and should not be avoided. 
 
 You need at least to: 
 
 Eat fried Ice Cream 
 
 Go to Disney 
 
 Travel to the moon 
 
 Cook Pineapple Pizza 
 
 Dance Salsa 

Закрытие открытых файлов с помощью close()

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

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

 file_example = open ("F:\\Directory\\AnotherDirectory\\tests\\TestingText.txt", "r") 
 
 print(file_example.read()) 
 
 file_example.close() 

Заключение

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

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

Licensed under CC BY-NC-SA 4.0
comments powered by Disqus