Работа с файлами
TODO Оба раза, и на геологах, и на психологах, был неочевидный эффект: «ну, уж эта-то странноватая фигня под названием "файлы" нам точно не нужна!». Не хватает примитивного мотиватора из реал лайфа.
Байтовые строки
- Строки в Python — не байты!
Байтовые строки — это bytes, или b"..."
- Умеют всё то же, что и строки
Состоят из маленьких целых чисел — байтов — (не нужно ord()/chr())
Трюк b[i:i+1]
- Буквами считаются только латинские
Нужны для представления любого набора байтов.
Есть ещё bytearray — это списки байтов (модифицируемые!)
Кодировки
Почему строки не годятся для для представления любого набора байтов?
- Понятие кодировки, их историческое происхождение и разнообразие, в т. ч. для русского
- Историческая подоплёка — не было интернетов
- Unicode — сложная штука
- В Python: какой-то свой извод Uncode (строго двухбайтовый)
В Linux обычно кодировка UTF-8
- В Windows-е их в разных случаях три разных!
Это не Unicode!
⇒ просто при вводе/выводе строки типа str уже происходит перекодирование
Примеры str.encode() и bytes.decode()
- бНОПНЯ
Текстовые файлы
Файл — именованная область данных, имеющая для программы потоковую структуру
- Открытие файла на чтение или запись
open()
- Последовательный ввод или вывод
.read()/.readline()/.write() и print(…, file=)
- Закрытие файла
Всё время происходит перекодирование!
Кстати, стандартный ввод, вывод и вывод ошибок
Двоичные файлы
TODO Отсюда и далее пока см. LecturesCMC/PythonIntro2021/11_Files
Не забыть про seek()
Специализированные файлы
- Сериализация — для складывания Python-объектов
С интерфейсом словаря (реализовано как БД) — бистрый поиск по ключу, по сути прямой доступ вместо последовательного
Ориентированные на формат библиотеки, например, zipfile
Д/З
- Почитать и прощёлкать
про файлы в учебнике
про байтвовые строки в документации
- Попробовать воспроизвести упражнения из лекции (см. видео)
- Задачи будут в следующий раз