Работа с файлами
(Долг за прошлую лекцию — дескрипторы)
Оператор with
Заранее задать finally (например, закрыть открытый файл, даже если были исключения)
протокол контекстного менеждера
.__enter__() / .__exit__(exc_type, exc_val, exc_tb)
Например, with open("file") as f: …
Или (сначала сделать простой вариант, без __init__ и raise)
Далее см. contextlib.html
Просто файлы
- текстовые и двоичные
str, bytes и bytearray
- файл как итератор
файл и with
бНОПНЯ
- Понятие кодировки. Unicode, UTF* и прочее
TODO
Типизированные файлы
- объекты: чтение и запись объектов Python
pickle.dumps(obj) / pickle.dump(obj, file)
pickle.loads(bytes_object) / pickle.load(file)
небезопасно
- структуры типа Си:
- пример: заголовок PNG
последовательность байтов?
- базы данных
- Идея: интерфейс словаря (ключ:значение) + быстрый поиск под капотом
- Файлы с известной структурой
- Тысячи их, часть поддерживают файловый протокол, часть — нет
Д/З
TODO