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

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

Оператор 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 
    • Подсказка — в Википедии ☺
    CP1252 ISO8859-1
    koi8-r CP1251
    CP1251 ISO8859-5
    CP866 koi8-r
  3. <<EJCMC(148, ZipInfo, Размер архива)>> Написать программу, которой на stdin подаётся zip-архив в виде шестнадцатеричного дампа (последовательность шестнадцатеричных цифр, возможно, разделённых пробелами и переводами строки), а на выходе она показывает количество и суммарный объём хранящихся в нём файлов, если их распаковать.

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

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