Чтение / запись файла в Python с примерами

3 min


Этот учебник охватывает следующую тему – Python Write File / Read File. Он описывает синтаксис записи в файл на Python. Кроме того, он объясняет, как записать в текстовый файл и предоставляет несколько примеров для справки.

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

Существует в основном два типа файлов, с которыми вам, возможно, придется взаимодействовать при программировании. Одним из них является текстовый файл, который содержит потоки символов ASCII или UNICODE (UTF-8). Каждая строка заканчивается символом новой строки (« n»), a.k.a. EOL (Конец строки).

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

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

Файл записи Python, поясненный примерами

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

Открыть файл в Python

Сначала вы должны открыть файл в Python для записи. Python предоставляет встроенную функцию open ().

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

''' Python open file syntax '''
 file_handle = open("file_name", "access_mode")

Первый аргумент – это имя или путь к файлу (включая имя файла). Например – sample_log.txt или /Users/john/home/sample_log.txt.

А второй параметр (необязательный) представляет режим для открытия файла. Значение «access_mode» определяет операцию, которую вы хотите выполнить над ним. Значением по умолчанию является режим READ only.

# Open a file named "sample_log.txt" 
# It rests in the same directory as you are working in. 
file_handle1 = open("sample_log.txt")

# Let's open the file from a given path
file_handle2 = open("/Users/john/home/sample_log.txt")

Режимы открытия файлов

Необязательно передавать аргумент mode. Если вы не установили его, то Python использует «r» в качестве значения по умолчанию для режима доступа. Это означает, что Python откроет файл только для чтения.

Тем не менее, в Python доступно всего шесть режимов доступа.

  • "р" – Он открывает текстовый файл для чтения. Он сохраняет смещение в начале файла. Если файл отсутствует, возникает ошибка ввода-вывода. Это также режим по умолчанию.
  • «R +» – Он открывает файл для операций чтения и записи. Устанавливает смещение в начале файла. Ошибка ввода-вывода для несуществующего файла.
  • «Ш» – Он открывает файл для записи и перезаписывает любой существующий контент. Дескриптор остается в начале данных. Если файл не существует, он создает его.
  • «W +» – Он открывает файл для операций чтения и записи. Отдых, он работает так же, как в режиме «W».
  • «А» – Он открывает файл для записи или создает новый, если файл не найден. Ручка движется до конца (EOF). Сохраняет существующий контент и вставляет данные до конца.
  • «+» – Он открывает файл для операций чтения и записи. Отдых, он работает так же, как в режиме «а».

Посмотрите несколько примеров:

# Open a file named "sample_log.txt" in write mode
###
# It rests in the same directory as you are working in.
file_handle1 = open("sample_log.txt", "w")

# Open the file from a given path in append mode
file_handle2 = open("/Users/john/home/sample_log.txt", "a")

Написать файл в Python

Python предоставляет две функции для записи в текстовый файл: Написать() а также Writelines (),

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

''' Python write() function '''
 file_handle.write("some text")

Но, во-первых, откройте любую IDE и создайте файл с именем «sample_log.txt» для нашего теста. Не вносите в него никаких других изменений.

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

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

# A simple example - Python write file
###
file_handle = open("sample_log.txt","w") 

file_handle.write("Hello Everyone!") 
file_handle.write("It is my first attempt to write to a file in Python.") 
file_handle.write("I'll first open the file and then write.") 
file_handle.write("Finally, I'll close it.") 

file_handle.close()

Мы открыли файл в режиме «w», что означает перезапись всего, что было написано ранее. Итак, после того, как вы откроете его и увидите его содержимое, вы найдете новый текст в четырех разных строках.

2. Writelines () – Функция writelines () принимает список строк в качестве входных данных и вставляет каждую из них как отдельную строку за один раз. Вы можете проверить его синтаксис ниже:

''' Python writelines() function '''
 file_handle.writelines((str1, str2, str3, ...))

Добавить файл в Python

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

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

Давайте разберемся с этим в нескольких строках кода:

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

# Python Append File in "a" mode Example
###
fh = open("test_append_a.txt", "a")
fh.write("Insert First Linen")
fh.write("Append Next Linen")

До сих пор две строки были добавлены в файл. Вторая операция записи указывает на успешное добавление.

Теперь вы увидите разницу между режимами «а» и «а +». Давайте попробуем операцию чтения и посмотрим, что произойдет.

fh.read() # io.UnsupportedOperation: not readable

Вышеприведенная строка кода потерпит неудачу, так как режим «a» не позволяет READ. Итак, закройте его, откройте, а затем выполните операцию чтения.

fh.close() # Close the file
fh = open("test_append_a.txt") # Open in the default read mode
print(fh.read()) # Now, read and print the entire file
fh.close()

Вывод что-то вроде:

Insert First Line
Append Next Line

Давайте теперь попробуем добавить, используя режим «+». Проверьте код ниже:

# Python Append File in "a+" mode Example
###
fh = open("test_append_aplus.txt", "a+")
fh.write("Insert First Linen")
fh.write("Append Next Linen")
fh.seek(0) # Set offset position to the start
print(fh.read()) # READ is sucess in a+ mode
 ## Output
 # Insert First Line
 # Append Next Line
fh.write("Append Another Linen") # WRITE another line to the text file
fh.seek(0) # Set the offset for reading
print(fh.read()) # Do the READ operation again
 ## Output
 # Insert First Line
 # Append Next Line
 # Append Another Line

Читать файл в Python

Для чтения текстового файла Python включает следующие три функции: читать(), Readline (), а также readlines ()

1. читать () – Это читает данное нет. байтов (N) в виде строки. Если значение не указано, он читает файл до EOF.

''' Python read() function '''
#Syntax
file_handle.read((N))

2. readline () – Это читает указанное нет. байтов (N) в виде строки из одной строки в файле. Он ограничивается одной строкой на вызов, даже если N больше байтов, доступных в одной строке.

''' Python readline() function '''
#Syntax
file_handle.readline((N))

3. читать строки () – Он читает каждую строку, представленную в текстовом файле, и возвращает их в виде списка строк.

''' Python readlines() function '''
#Syntax
file_handle.readlines()

Использовать функции чтения файлов Python настолько просто, что вы можете проверить сами. Просто введите следующий код в вашу IDE или IDE Python по умолчанию, т.е. IDLE.

# Python Read File Example
###
fh = open("sample_log.txt") # No need to specify the mode as READ is the default mode
print(fh.read()) # Expect the whole file to get printed here
fh.seek(0) # Reset the file offset to the beginning of the file
print(fh.readline()) # Print just the first line from the file
fh.seek(0) # Reset the offset again
print(fh.readlines()) # Print the list of lines
fh.close() # Close the file handle

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

Закрыть файл в Python

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

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

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

С заявлением в Python

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

Кроме того, он обеспечивает обработку исключений из коробки (Python попробуй-кроме) пока вы работаете с файлами. Посмотрите на следующий пример, чтобы увидеть, как с оператором работает.

# Write File in Python using WITH statement
##
# Sample code(1) Write to a text file
fh = open("sample_log.txt", "w") 
try: 
   fh.write("I love Python Programming!") 
finally: 
   fh.close()

# Sample code(2) Write using with statement 
with open("sample_log.txt", "w") as fh: 
   fh.write("I love Python even more!!")

Рабочий пример кода

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

  • Запись на Python с использованием write () и writelines ()
  • Python для чтения файловых операций с использованием read (), readline () и readlines ()
# Python Write File/ Read File Example
###
print("### Python Write File/ Read File Example ###n")
file_handle = open("sample_log.txt", "w") 
list_of_strings = ("Python programming n","Web development n","Agile Scrum n") 

# Write a newline char at each line in the file
file_handle.write("Welcome! n") 
file_handle.writelines(list_of_strings) 
file_handle.close()

# Open the text file for reading
file_handle = open("sample_log.txt", "r+") 

# Read the entire text file and display its content
print("1) Demonstrate Python read() function")
out = file_handle.read()
print("n>>>Python read() file output:n{}".format(out))

# Now, set the file offset to the beginning
file_handle.seek(False)

# Read the first line from the text file using readline()
print("2) Demonstrate Python readline() function")
out = file_handle.readline() 
print("n>>>Python readline() file output:ntLine#1{}".format(out))

# Again, position the file offset to zero
file_handle.seek(False) 

# Read the entire text file using readlines()
print("3) Demonstrate Python readlines() function")
out = file_handle.readlines()
file_handle.close()
print("n>>>Python readlines() file output:")
for i, line in enumerate(out):
  print("tLine#{} {}".format(i+1, line))

Эта программа Python генерирует следующий вывод:

чтение, запись файла в рабочем примере Python

Попытка викторины

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

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

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

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


0 Comments

Ваш e-mail не будет опубликован. Обязательные поля помечены *