Работа с файлами в Python может включать как текстовые, так и бинарные файлы, в зависимости от типа данных, которые вы планируете хранить или обрабатывать. Давайте рассмотрим особенности работы с каждым из них.
Текстовые файлы
Текстовые файлы содержат данные, представленные в виде текста, который можно прочитать и интерпретировать человеком. Для работы с текстовыми файлами используются следующие режимы доступа:
'r'
: чтение (файл должен существовать)'w'
: запись (создаст новый файл или перезапишет существующий)'a'
: добавление в конец (создаст новый файл или добавит данные в существующий)'r+'
: чтение и запись (файл должен существовать)'w+'
: запись и чтение (создаст новый файл или перезапишет существующий)'a+'
: добавление и чтение (создаст новый файл или добавит данные в существующий)# Чтение из текстового файла
with open("text_file.txt", "r") as file:
data = file.read()
print(data)
# Запись в текстовый файл
with open("text_file.txt", "w") as file:
file.write("Hello, world!\n")
file.write("This is a text file.")
# Добавление в текстовый файл
with open("text_file.txt", "a") as file:
file.write("Appending new line to text file.\n")
Бинарные файлы
Бинарные файлы содержат данные, которые не представляются в виде текста, а в виде последовательности байтов. Бинарные файлы обычно используются для хранения изображений, аудиофайлов, видеофайлов и других типов данных, которые не могут быть представлены в текстовом формате. Для работы с бинарными файлами используются следующие режимы доступа:
'rb'
: чтение (файл должен существовать)'wb'
: запись (создаст новый файл или перезапишет существующий)'ab'
: добавление в конец (создаст новый файл или добавит данные в существующий)'rb+'
: чтение и запись (файл должен существовать)'wb+'
: запись и чтение (создаст новый файл или перезапишет существующий)'ab+'
: добавление и чтение (создаст новый файл или добавит данные в существующий)# Чтение из бинарного файла
with open("binary_file.bin", "rb") as file:
data = file.read()
print(data)
# Запись в бинарный файл
with open("binary_file.bin", "wb") as file:
file.write(b"\x48\x65\x6C\x6C\x6F\x2C\x20\x77\x6F\x72\x6C\x64\x21") # "Hello, world!" в байтовом представлении
# Добавление в бинарный файл
with open("binary_file.bin", "ab") as file:
file.write(b"\x0A\x4E\x65\x77\x20\x64\x61\x74\x61") # "\nNew data" в байтовом представлении
Использование контекстного менеджера
Для обеспечения корректного закрытия файлов после завершения операций с ними рекомендуется использовать контекстный менеджер
with
. Это гарантирует, что файл будет закрыт автоматически по завершении блока with
, даже если произойдет исключение в процессе работы с файлом.Чтение построчно
Чтение текстового файла построчно с помощью цикла:
with open("example.txt", "r") as file:
for line in file:
print(line, end="")
Запись списка строк
Запись списка строк в текстовый файл:
lines = ["First line\n", "Second line\n", "Third line\n"]
with open("example.txt", "w") as file:
file.writelines(lines)
Чтение файла в список строк
Чтение текстового файла в список строк:
with open("example.txt", "r") as file:
lines = file.readlines()
print(lines)
Работа с большими файлами
Чтение больших файлов частями для экономии памяти:
with open("large_file.txt", "r") as file:
while True:
chunk = file.read(1024) # Чтение по 1024 байта за раз
if not chunk:
break
print(chunk)