Рубрики
Без рубрики

Python Пишите в файл – открыть, прочитать, добавить и другие функции обработки файлов объяснены

Автор оригинала: Estefania Cassingena Navone.

Добро пожаловать

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

В этой статье вы узнаете:

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

Давайте начнем! ✨.

🔹 Работа с файлами: базовый синтаксис

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

Это основной синтаксис :

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

Первый параметр: файл

Первый параметр Открыть () Функция это Файл , абсолютный или относительный путь к файлу, с которым вы пытаетесь работать.

Мы обычно используем относительный путь, который указывает на то, что файл расположен относительно местоположения сценария (файл Python), который вызывает Открыть () функция.

Например, путь в этой функции вызов:

open("names.txt") # The relative path is "names.txt"

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

Но если файл находится в вложенной папке, вроде это:

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

В этом примере это будет путь:

open("data/names.txt")

Обратите внимание, что мы пишем данные/ Сначала (имя папки, а затем / ), а затем names.txt (имя файла с расширением).

💡 Совет: Три буквы .txt которые следуют за точкой в names.txt это «расширение» файла или его типа. В этом случае .txt Указывает, что это текстовый файл.

Второй параметр: режим

Второй параметр Открыть () Функция – это Режим , строка с одним символом. Этот одиночный персонаж в основном рассказывает Python, что вы планируете делать с файлом в вашей программе.

Доступны режимы:

  • Читать ( "R" ).
  • Применение ( "A" )
  • Написать ( "W" )
  • Создать ( "X" )

Вы также можете выбрать открыть файл в:

  • Текстовый режим ( "T" )
  • Двоичный режим ( "B" )

Чтобы использовать текст или двоичный режим, вам нужно добавить эти символы в основной режим. Например: "WB" означает запись в двоичном режиме.

💡 Совет: Режимы по умолчанию читаются ( «R» ) и текст ( «T» ), что означает «открыть для чтения текста» ( «RT» ), так что вам не нужно указать их в Открыть () Если вы хотите использовать их, потому что они назначаются по умолчанию. Вы можете просто написать Открыть (<Файл>) Отказ

Почему режимы?

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

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

🔸 Как прочитать файл

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

Это основной синтаксис:

Мы просто назначаем значение, возвращенное в переменную. Например:

names_file = open("data/names.txt", "r")

Я знаю, что вы можете спросить: какую ценность возвращается Открыть () ?

Ну, А Файл объект Отказ

Давайте немного поговорим о них.

Файловые объекты

Согласно Документация Python , а Файл объект является:

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

Файловые объекты имеют атрибуты, такие как:

  • Имя : имя файла.
  • закрыто : Правда Если файл закрыт. Ложь иначе.
  • Режим : Режим, используемый для открытия файла.

Например:

f = open("data/names.txt", "a")
print(f.mode) # Output: "a"

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

Методы для чтения файла

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

Читать()

Первый метод, который вам нужно узнать о том, это Читать () , который Возвращает все содержимое файла в виде строки.

Здесь у нас есть пример:

f = open("data/names.txt")
print(f.read())

Вывод:

Nora
Gino
Timmy
William

Вы можете использовать Тип () Функция, чтобы подтвердить, что значение, возвращенное f.read () это строка:

print(type(f.read()))

# Output

Да, это строка!

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

Здесь у нас есть пример:

f = open("data/names.txt")
print(f.read(3))

Возвращенная стоимость ограничена этим количеством байтов:

Nor

❗️ Важно: .. Вам нужно Закрыть Файл после того, как задача была завершена для освобождения ресурсов, связанных с файлом. Для этого вам нужно позвонить в Закрыть () Метод, как это:

Readline () vs. readleines ()

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

readline () Читает одна линия файла, пока он не достигнет конца этой линии. Персонаж Craining Newline ( \ N ) хранится в строке.

💡 Совет: Необязательно, вы можете пройти размер, максимальное количество символов, которые вы хотите включить в результирующую строку.

Например:

f = open("data/names.txt")
print(f.readline())
f.close()

Вывод:

Nora

Это первая строка файла.

Напротив, Readleines () Возвращает Список со всеми линиями файла как отдельные элементы (строки). Это синтаксис:

Например:

f = open("data/names.txt")
print(f.readlines())
f.close()

Вывод:

['Nora\n', 'Gino\n', 'Timmy\n', 'William']

Обратите внимание, что есть \ N (Новый символ) в конце каждой строки, кроме последнего.

💡 Совет: Вы можете получить тот же список с Список (е) Отказ

Вы можете работать с этим списком в вашей программе, назначая его переменной или используя ее в цикле:

f = open("data/names.txt")

for line in f.readlines():
    # Do something with each line
    
f.close()

Мы также можем итерации за F Прямой (объект файла) в цикле:

f = open("data/names.txt", "r")

for line in f:
	# Do something with each line

f.close()

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

🔹 Как создать файл

Если вам нужно создать файл «динамически», используя Python, вы можете сделать это с "х" режим.

Давайте посмотрим, как. Это основной синтаксис:

Вот пример. Это мой текущий рабочий каталог:

Если я запускаю эту строку кода:

f = open("new_file.txt", "x")

Создан новый файл с этим именем:

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

💡 Совет: Файл будет изначально пуст, пока вы не измените его.

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

Traceback (most recent call last):
  File "", line 8, in 
    f = open("new_file.txt", "x")
FileExistsError: [Errno 17] File exists: 'new_file.txt'

Согласно Документация Python Это исключение (ошибка времени выполнения):

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

🔸 Как изменить файл

Чтобы изменить (запись в) файл, вам нужно использовать Написать () метод. У вас есть два способа сделать это (добавить или писать) на основе режима, с которым вы решите открыть его. Давайте посмотрим их подробно.

Присоединиться к

«Применение» означает добавление чего-либо до конца другой вещи. «А» Режим позволяет открыть файл для добавления некоторого контента к нему.

Например, если у нас есть этот файл:

И мы хотим добавить в нее новую строку, мы можем открыть его, используя «А» Режим (добавить), а затем позвоните в Написать () Метод, передача содержимого, которое мы хотим добавить в качестве аргумента.

Это основной синтаксис для вызова Написать () Метод:

Вот пример:

f = open("data/names.txt", "a")
f.write("\nNew Line")
f.close()

💡 Совет: Обратите внимание, что я добавляю \ N Перед линией, чтобы указать, что я хочу, чтобы новая строка появилась как отдельная строка, а не как продолжение существующей строки.

Это файл сейчас, после запуска скрипта:

💡 Совет: Новая строка может не отображаться в файле до f.close () бежит.

Писать

Иногда вы можете удалить содержимое файла и полностью заменить его с новым контентом. Вы можете сделать это с Написать () Метод, если вы открываете файл с “W” режим.

Здесь у нас есть этот текстовый файл:

Если я запускаю этот скрипт:

f = open("data/names.txt", "w")
f.write("New Content")
f.close()

Это результат:

Как видите, открывая файл с “W” Режим, а затем запись на него заменяет существующий контент.

💡 Совет: Написать () Метод возвращает количество написанных символов.

Если вы хотите написать несколько строк одновременно, вы можете использовать Writelines () Метод, который принимает список строк. Каждая строка представляет собой строку, которая будет добавлена в файл.

Вот пример. Это начальный файл:

Если мы запустим этот скрипт:

f = open("data/names.txt", "a")
f.writelines(["\nline1", "\nline2", "\nline3"])
f.close()

Линии добавляются к концу файла:

Открытый файл для нескольких операций

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

Если вы открываете файл в "R" Режим (прочитайте), а затем попробуйте написать ему:

f = open("data/names.txt")
f.write("New Content") # Trying to write
f.close()

Вы получите эту ошибку:

Traceback (most recent call last):
  File "", line 9, in 
    f.write("New Content")
io.UnsupportedOperation: not writable

Точно так же, если вы откроете файл в "W" Режим (напишите), а затем попробуйте прочитать его:

f = open("data/names.txt", "w")
print(f.readlines()) # Trying to read
f.write("New Content")
f.close()

Вы увидите эту ошибку:

Traceback (most recent call last):
  File "", line 14, in 
    print(f.readlines())
io.UnsupportedOperation: not readable

То же самое произойдет с «А» (Добавить) режим.

Как мы можем решить это? Чтобы иметь возможность прочитать файл и выполнить другую работу в той же программе, вам нужно добавить "+" Символ в режиме, как это:

f = open("data/names.txt", "w+") # Read + Write
f = open("data/names.txt", "a+") # Read + Append
f = open("data/names.txt", "r+") # Read + Write

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

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

🔹 Как удалить файлы

Чтобы удалить файл с помощью Python, вам нужно импортировать модуль под названием ОС который содержит функции, которые взаимодействуют с вашей операционной системой.

💡 Совет: А модуль это файл Python со связанными переменными, функциями и классами.

Особенно вам нужен Удалить () функция. Эта функция принимает путь к файлу в качестве аргумента и автоматически удаляет файл.

Давайте посмотрим пример. Мы хотим удалить файл под названием образец_file.txt Отказ

Чтобы сделать это, мы пишем этот код:

import os
os.remove("sample_file.txt")
  • Первая строка: Импорт ОС называется «Импорт оператора». Это утверждение написано в верхней части вашего файла, и он дает вам доступ к функциям, определенным в ОС модуль.
  • Вторая строка: OS.REMOVE («JUSS_FILE.TXT») Удаляет указанный файл.

💡 Совет: Вы можете использовать абсолютный или относительный путь.

Теперь, когда вы знаете, как удалить файлы, давайте посмотрим интересный инструмент … Контекстные менеджеры!

🔸 Познакомьтесь с контекстными менеджерами

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

Синтаксис

Это пример контекстно-менеджера, используемого для работы с файлами:

💡 Совет: Тело контекстно-менеджера должно быть отступлением, так же, как мы отступаем к циклам, функциям и классам. Если код не с отступом, он не будет считаться частью контекстно-менеджера.

Когда тело контекстно-менеджера было завершено, файл закрывается автоматически.

with open("", "") as :
    # Working with the file...

# The file is closed here!

Пример

Вот пример:

with open("data/names.txt", "r+") as f:
    print(f.readlines()) 

Этот менеджер контекста открывает names.txt Файл для операций по чтению/записи и присваивает этот объект файла к переменной F Отказ Эта переменная используется в корпусе контекстно-менеджера для ссылки на объект файла.

Пытаясь прочитать это снова

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

with open("data/names.txt", "r+") as f:
    print(f.readlines())

print(f.readlines()) # Trying to read the file again, outside of the context manager

Давай посмотрим что происходит:

Traceback (most recent call last):
  File "", line 21, in 
    print(f.readlines())
ValueError: I/O operation on closed file.

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

🔹 Как обрабатывать исключения при работе с файлами

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

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

Давайте посмотрим некоторые из наиболее распространенных исключений (ошибок выполнения), которые вы можете найти, когда вы работаете с файлами:

FileNotFoundError.

Согласно Документация Python Это исключение:

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

f = open("names.txt")

Вы увидите эту ошибку:

Traceback (most recent call last):
  File "", line 8, in 
    f = open("names.txt")
FileNotFoundError: [Errno 2] No such file or directory: 'names.txt'

Давайте сломаем эту ошибку вниз по этой строке:

  • Файл "", строка 8, в <Модуль> Отказ Эта строка говорит вам, что ошибка была поднята, когда код в файле расположен в <Путь> Бежал. В частности, когда линия 8 был казнен в <модуль> Отказ
  • F («names.txt») Отказ Это линия, которая вызвала ошибку.
  • FileNotFoundError: [Errno 2] Нет такого файла или каталога: «names.txt» Отказ Эта линия говорит, что FileNotfoundError Исключение было поднято, потому что файл или каталог names.txt не существует

💡 Совет: Python очень описательный с сообщениями об ошибках, верно? Это огромное преимущество в процессе отладки.

PermissereRor.

Это еще одно общее исключение при работе с файлами. Согласно Документация Python Это исключение:

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

Traceback (most recent call last):
  File "", line 8, in 
    f = open("")
PermissionError: [Errno 13] Permission denied: 'data'

IsadirectoryError.

Согласно Документация Python Это исключение:

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

Как обрабатывать исключения

Чтобы обработать эти исключения, вы можете использовать попробуй/кроме утверждение. С этим утверждением вы можете «рассказать» вашу программу, что делать в случае, если произойдет что-то неожиданное.

Это основной синтаксис:

try:
	# Try to run this code
except :
	# If an exception of this type is raised, stop the process and jump to this block
    

Здесь вы можете увидеть пример с FileNotfoundError :

try:
    f = open("names.txt")
except FileNotFoundError:
    print("The file doesn't exist")

Это в основном говорит:

  • Попробуйте открыть файл names.txt Отказ
  • Если FileNotfoundError бросил, не врезаешься! Просто распечатайте описательное заявление для пользователя.

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

Чтобы закрыть файл автоматически после задачи (независимо от того, был ли исключение поднято или нет в Fear Block) Вы можете добавить Наконец блокировать.

try:
	# Try to run this code
except :
	# If this exception is raised, stop the process immediately and jump to this block
finally: 
	# Do this after running the code, even if an exception was raised

Это пример:

try:
    f = open("names.txt")
except FileNotFoundError:
    print("The file doesn't exist")
finally:
    f.close()

Есть много способов настроить заявление TRY/кроме/, наконец, и вы даже можете добавить еще Блок, чтобы запустить блок кода, только если не были подняты исключения в попробуйте блокировать.

💡 Совет: Чтобы узнать больше о обработке исключений в Python, вы можете прочитать мою статью: «Как обрабатывать исключения в Python: подробное визуальное введение” Отказ

🔸 в резюме

  • Вы можете создавать, читать, писать и удалять файлы с помощью Python.
  • Объекты файлов имеют свой собственный набор методов, которые вы можете использовать для работы с ними в вашей программе.
  • Контекстные менеджеры помогут вам работать с файлами и управлять им, автоматически закрывая их, когда задача была завершена.
  • Обработка исключений является ключ в Python. Общие исключения, когда вы работаете с файлами, включают FileNotfoundError , PermissereRor и IsadirectoryError Отказ Они могут быть обработаны, используя TRY/кроме/иначе/наконец.

Я действительно надеюсь, тебе понравилась моя статья и обнаружила, что это полезно. Теперь вы можете работать с файлами в ваших проектах Python. Проверьте мои онлайн-курсы Отказ Следуй за мной на Twitter Отказ ⭐️.