Глава 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
Что дальше
Глава 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) — не файлы на вашем реальном компьютере.