Работа с файлами

(Долг за прошлую лекцию — дескрипторы)

Оператор with

Далее см. contextlib.html

Просто файлы

В tutorial

бНОПНЯ

Типизированные файлы

Д/З

  1. Прощёлкать примеры с файлами в Tutorial, а также примеры по pickle и struct

  2. <<EJCMC(148, TotalBnopnya, Неудачная перекодировка)>> Текст процедуры на языке Рапира в кодировке koi8-r был несколько раз перекодирован, причём перекодировщику сообщали совершенно произвольную исходную и целевую кодировку (например, из CP866 в latin1). Восстановить предполагаемый текст процедуры и последовательность перекодировки.

    • В первой строке ввода — возможные кодировки, не более 8 (через пробел)
    • Во второй строке ввода — последовательность шестнадцатеричных цифр — это байты закодированной процедуры
    • На выходе — пары кодировок в столбик, с помощью которых происходило кодирование (из какой в какую; соответственно, если перекодировать в обратном направлении и порядке, получится исходная процедура)
    • Всего таких пар не больше четырёх (может быть 0, если процедура не перекодирована)
    utf8 koi8-r CP1251 CP866 CP1252 ISO8859-1 ISO8859-5 MACCYRILLIC 
    8384acaf20898890848828293b0a2020202092b892ac873a2022a78784909289889286b52c20aea68421223b0aa1adaf3b0a 
    • Подсказка — в Википедии ☺
    • Важное замечание. Все буквы в исходной процедуре — заглавные, (на самом деле исходная кодировка была КОИ-7, но я решил упростить задание, а в итоге чуть было не усложнил его).

    TODO 
  3. <<EJCMC(148, ZipInfo, Размер архива)>> Написать программу, которой на stdin подаётся zip-архив в виде шестнадцатеричного дампа (последовательность шестнадцатеричных цифр, возможно, разделённых пробелами и переводами строки), а на выходе она показывает количество и суммарный объём хранящихся в нём файлов, если их распаковать.

    • Внимание! в отличие от всех предыдущих задач, никакой пустой строки в конце нет, пользуйтесь файловыми операциями ввода!

    • Есть минимум два принципиально разных способа решить эту задачу