На этом шаге мы рассмотрим особенности работы с такими архивами.
Рассмотренные нами на предыдущих шагах форматы архивов GZIP, BZIP2 и LZMA позволяют хранить лишь один файл. В отличие от них, популярнейший формат ZIP может хранить сколько угодно файлов, однако произвольные данные мы сохранить в нем не сможем.
Поддержка формата ZIP реализована в модуле zipfile. В первую очередь, нам понадобится класс ZipFile, представляющий архив и выполняющий все манипуляции с ним. Конструктор этого класса вызывается следующим образом:
ZipFile (<Файл>[, mode='r'][, compression=ZIP_STORED][, allowZip64=True])
Первый параметр задает путь к архивному файлу. Вместо него можно задать файловый объект.
Параметр mode определяет режим открытия файла. Мы можем указать строковые значения:
Параметр compression указывает алгоритм сжатия, который будет применен для архивирования содержимого файла. Доступны значения:
Если присвоить параметру allowZip64 значение False, будет невозможно создать архив размером более 2 Гбайт. Этот параметр предусмотрен для совместимости со старыми версиями архиваторов ZIP.
Архивный файл всегда открывается в двоичном режиме. Пример:
>>> import zipfile >>> f = zipfile.ZipFile ("test.zip", mode = "a", compression = zipfile.ZIP_DEFLATED)
На следующем шаге мы рассмотрим методы класса ZipFile.