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

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

Оператор with

Далее см. contextlib.html

Просто файлы

В tutorial

бНОПНЯ

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

Д/З

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

  2. EJudge: TotalBnopnya 'Неудачная перекодировка'

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

    • В первой строке ввода — возможные кодировки, не более 8 (через пробел)
    • Во второй строке ввода — последовательность шестнадцатеричных цифр — это байты закодированной процедуры
    • На выходе — исходный текст процедуры.
    • Для упрощения будет считать, что в программе на языке Рапира могут присутствовать только
      • Заглавные русские и латинские буквы (строчных нет)

      • Цифры и символы из набора ()[]+-*/%;.,>=<"!:

      • Пробелы, табуляции и переводы строки
    • Известно, что неоднозначная перекодировка (в которой более одного входного символа соответствует одному выходному) не производилась

    Input:

    utf8 koi8-r CP1251 CP866 ISO8859-1 ISO8859-5 mac-arabic cp1140
    d0aed091e2959ed19120d0a6d094e29591d091d09428293b0a20202020d093d098d093e2959ee295933a2022d099e29593d091e29591d093d0a6d094d093d095e295992c20e2959ce29598d09121223b0ae2959ae2959dd1913b0a
    Output:

    utf8 koi8-r CP1251 CP866 ISO8859-1 ISO8859-5 mac-arabic cp1140
    6641665066316635c28066476644663366506644c288c289c29bc28ec280c280c280c28066c2b966c2ad66c2b966316657c29ac280c28266c3b466576650663366c2b96647664466c2b9664566c29fc28cc28066c39c66c3996650c281c282c29bc28e6639665c6635c29bc28e
  3. <<EJCMC(148, ZipInfo, Размер архива)>> Написать программу, которой на stdin подаётся zip-архив в виде шестнадцатеричного дампа (последовательность шестнадцатеричных цифр, возможно, разделённых пробелами и переводами строки), а на выходе она показывает количество и суммарный объём хранящихся в нём файлов, если их распаковать.

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

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