8. Работа с файлами #
Работа с файлами — одна из основных задач программирования. Python предоставляет мощные инструменты для обработки текстовых и бинарных файлов.
8.1. Чтение и запись текстовых файлов #
Открытие файла #
Функция open()
используется для открытия файла. Она принимает два основных аргумента:
- Имя файла.
- Режим работы:
'r'
— чтение (по умолчанию).'w'
— запись (перезаписывает файл).'a'
— добавление в конец файла.'r+'
— чтение и запись.
Чтение файла #
# Пример файла: example.txt
# Содержимое: "Hello, world!"
with open("example.txt", "r") as file:
content = file.read()
print(content) # Hello, world!
Чтение строк по одной:
with open("example.txt", "r") as file:
for line in file:
print(line.strip()) # Удаляем символ перевода строки
Запись в файл #
with open("output.txt", "w") as file:
file.write("This is a new file.\n")
file.write("Adding another line.")
Добавление в файл:
with open("output.txt", "a") as file:
file.write("\nAppending this line.")
8.2. Работа с бинарными файлами #
Бинарные файлы хранят данные в необработанном виде (например, изображения, звуки). Для работы с ними используются режимы 'rb'
(чтение) и 'wb'
(запись).
Чтение бинарного файла #
with open("image.jpg", "rb") as file:
data = file.read()
print(len(data)) # Количество байтов в файле
Запись бинарного файла #
with open("copy.jpg", "wb") as file:
file.write(data) # Записываем содержимое из переменной data
Чтение частями #
Для больших файлов можно читать данные порциями:
with open("large_file.bin", "rb") as file:
while chunk := file.read(1024): # Читаем по 1024 байта
print(f"Прочитано {len(chunk)} байт")
8.3. Использование менеджеров контекста #
Менеджеры контекста (ключевое слово with
) обеспечивают безопасное открытие и закрытие файла, даже если в процессе работы возникнет ошибка.
Преимущество использования with
#
Без менеджера контекста:
file = open("example.txt", "r")
try:
content = file.read()
finally:
file.close() # Закрытие файла вручную
С менеджером контекста:
with open("example.txt", "r") as file:
content = file.read()
# Файл закрывается автоматически при выходе из блока with
Вложенные менеджеры контекста #
Можно работать с несколькими файлами одновременно:
with open("input.txt", "r") as infile, open("output.txt", "w") as outfile:
for line in infile:
outfile.write(line.upper()) # Копируем текст в верхнем регистре
Пример комплексной работы с файлами #
Чтение, обработка и запись данных #
# Чтение данных
with open("data.txt", "r") as infile:
lines = infile.readlines()
# Обработка данных
processed_lines = [line.strip().upper() for line in lines]
# Запись обработанных данных
with open("processed_data.txt", "w") as outfile:
outfile.write("\n".join(processed_lines))
Генерация файлов отчетов #
data = {"Alice": 95, "Bob": 87, "Charlie": 78}
# Запись отчета в файл
with open("report.txt", "w") as file:
for name, score in data.items():
file.write(f"{name}: {score}\n")
Рекомендации при работе с файлами #
- Используйте менеджеры контекста для безопасного открытия и закрытия файлов.
- Для больших файлов читайте данные частями, чтобы экономить память.
- Всегда указывайте режим (
'r'
,'w'
,'rb'
, и т. д.), чтобы избежать непредвиденного поведения. - Проверяйте наличие файла перед его открытием с помощью модуля
os
илиpathlib
.
Работа с файлами в Python — мощный инструмент, который позволяет легко обрабатывать текстовые и бинарные данные.