tariel.ge › Полезное: бесплатные книги › Программирование: от нулей и единиц до PythonБесплатно · автор Тариел Бежанидзе
← Учебник по программированию ЛИСТ 19БЛОК 3 — PYTHON: ОСНОВЫ · ФИНАЛРЕВ. 1
Глава 19 · Python: основы

Файлы: чтение и запись

Финал блока — момент, когда программа впервые выходит за пределы одного запуска и начинает сохранять или читать что-то реальное с диска, применяя сразу структуры данных (глава 17) и работу с текстом (глава 18).

Открытие файла и режимы доступа

РежимЗначение
'r'Чтение (по умолчанию) — файл должен существовать
'w'Запись — полностью перезаписывает файл, если он уже существовал
'a'Добавление в конец существующего файла, не стирая содержимое
'x'Создание нового файла — ошибка, если файл уже существует
Самая частая опасная ошибка новичка с файлами

Открытие существующего важного файла в режиме 'w' вместо 'r' или 'a' мгновенно и безвозвратно стирает его прежнее содержимое, ещё до того, как в него будет что-то записано, — точно так же незаметно и без подтверждения, как удаление файла командой rm из главы 09. Стоит явно проверять, какой режим действительно нужен, прежде чем открывать файл, с которым не хочется случайно расстаться.

Контекстный менеджер with — правильный способ работы с файлом

with open("data.txt", "r", encoding="utf-8") as f:
    content = f.read()
    print(content)
# файл автоматически закрыт здесь, даже если внутри блока произошла ошибка

Конструкция with ... as f: гарантированно закрывает файл после выхода из блока — даже если внутри блока возникнет ошибка (тема главы 21). Без with пришлось бы вручную вызывать f.close(), и легко забыть об этом, особенно если программа завершается раньше времени из-за исключения — файл остался бы "подвешен" открытым.

Параметр encoding — практическое применение главы 03 и 18

Явное указание encoding="utf-8" при открытии файла говорит Python, как именно превращать байты файла на диске обратно в текст (глава 03). Если реальная кодировка файла отличается от указанной, попытка чтения может завершиться ошибкой UnicodeDecodeError (подробнее об обработке ошибок — глава 21) — та же проблема "кракозябр", что уже разбиралась в главе 03, только теперь в виде конкретной ошибки Python, а не визуально испорченного текста в текстовом редакторе.

Способы чтения

f.read() # весь файл целиком одной строкой
f.readline() # одна строка за вызов
f.readlines() # список всех строк файла

# самый экономный по памяти способ для больших файлов — построчная итерация:
with open("data.txt", encoding="utf-8") as f:
    for line in f:
        print(line.strip()) # .strip() убирает завершающий перевод строки

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

Запись в файл

with open("result.txt", "w", encoding="utf-8") as f:
    f.write("Первая строка\n")
    f.write("Вторая строка\n")

Обрати внимание — .write() не добавляет перевод строки автоматически, в отличие от print(), — нужно явно включать \n (глава 18) там, где он нужен.

Практический пример: разбор простого текстового файла с данными

# содержимое data.csv:
# Тариэл,25
# Анна,30

users = []
with open("data.csv", encoding="utf-8") as f:
    for line in f:
        name, age = line.strip().split(",")
        users.append({"имя": name, "возраст": int(age)})

print(users) # [{'имя': 'Тариэл', 'возраст': 25}, {'имя': 'Анна', 'возраст': 30}]

Этот пример прямо объединяет главы 17–19: чтение файла построчно, разбор строки методом .split() (глава 18), сборка результата в уже знакомый шаблон "список словарей" (глава 17). Это ровно та практика, что подробно разовьётся в главе 23 применительно к настоящим скриптам автоматизации.

Проверка существования файла — предисловие к главе 22

Прежде чем открывать файл, часто полезно убедиться, что он вообще существует — модуль os (или более современный pathlib) даёт для этого готовые инструменты, подробно разбираемые в главе 22, посвящённой работе с файловой системой напрямую из Python.

Итог блока «Python: основы»

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

Глава19 — Файлы: чтение и запись
Блок3 — Python: основы — финал
Далее20 — Модули, пакеты, pip
СтатусГотово · рев. 1
Предыдущая глава ← 18 · Строки и работа с текстом Следующая глава 20 · Модули, пакеты, pip →

Книга бесплатна для чтения. Автор — Тариел Бежанидзе, компьютерный мастер в Батуми · tariel.ge · все бесплатные книги. Копировать текст целиком на другие сайты — только со ссылкой на источник.