Глава 15 · Python и файлы

Итоги главы: инструментарий работы с файлами

От «куда пропадают переменные» до JSON, CSV и настоящей персистентности — полная карта главы.

Инструментарий работы с файлами

Что выбрать для конкретной задачи
Нужен путь
pathlib.Path
Нужна текущая рабочая директория
Path.cwd()
Нужна папка рядом со своим .py-файлом
Path(__file__).resolve().parent
Небольшой UTF-8-текстовый файл целиком
path.read_text() / write_text()
Построчная обработка или особый режим
with path.open(режим, encoding="utf-8")
Дозапись без потери старого содержимого
open(путь, "a", ...)
Создать, но не заменить существующий файл
open(путь, "x", ...)
Бинарные данные целиком
path.read_bytes() / write_bytes()
Список содержимого папки
path.iterdir()
Поиск файлов по шаблону
path.glob("*.txt")
Вложенная структура данных
модуль json
Таблица со строками и столбцами
модуль csv
Много пользователей / транзакции
вероятно, база данных — не простой файл
Глава 15 целиком
Персистентность
память процесса — временна
устойчивое хранилище переживает завершение процесса
загрузка ≠ тот же объект
Файловая система
файл vs папка
абсолютный vs относительный путь
CWD ≠ папка со скриптом
pathlib.Path
путь как объект
name / stem / suffix / parent
read_text/write_text/read_bytes/write_bytes
Файл и with
open() → объект файла
with гарантирует закрытие
курсор двигается вперёд, tell()/seek()
Текст и байты
str кодируется в bytes
UTF-8 — явный выбор курса
символы ≠ байты
Структурированные данные
JSON — вложенные структуры
CSV — таблицы, не split(",")
безопасное сохранение — temp → replace
Работа с файлами
Персистентность
память временна
хранилище переживает завершение процесса
Пути
абсолютные и относительные
CWD
pathlib.Path
Файл
open/with
курсор, tell/seek
режимы r/w/a/x
Текст и байты
str/bytes
UTF-8
Структурированные данные
JSON
CSV
Карта главы 15 целиком.

Что дальше

Глава 16: Tkinter-приложение
использует то, что мы уже умеем
load_settings() / save_settings()
settings.json
Персистентность, освоенная в этой главе, становится памятью будущего графического приложения.

В главе 16 («Создаём классные приложения с Tkinter») мы построим первое настоящее графическое приложение — и оно сможет запоминать настройки пользователя между запусками именно через load_settings()/save_settings() из раздела 15.25, без единой новой строчки про файлы.

Что мы узнали в этой главе

  • Объекты Python живут в памяти процесса и не переживают его завершение — данные в устойчивом файловом хранилище могут пережить завершение процесса.
  • Путь — не содержимое файла: Path(...) лишь ссылается на место в файловой системе.
  • Относительный путь разрешается относительно текущей рабочей директории (CWD) — а не папки со скриптом.
  • pathlib.Path — путь как объект: name/stem/suffix/parent и удобные методы вместо ручной сборки строк.
  • open() возвращает объект файла; with гарантирует его закрытие даже при ошибке.
  • У файла есть курсор — позиция чтения/записи, которая двигается вперёд и не возвращается сама; для этого есть seek().
  • Режимы r/w/a/x — разный риск для существующего содержимого; "w" стирает файл уже при открытии.
  • Текст кодируется в байты — всегда явно указывайте encoding="utf-8", не полагайтесь на кодировку по умолчанию.
  • JSON сохраняет вложенные структуры Python; CSV — таблицы; ни split(","), ни str(словарь) не заменяют настоящий формат сериализации.
  • Файлы браузерной практики (Pyodide) — не файлы на вашем реальном компьютере.