Архивация в python

Реализовано несколько встроенных модулей для сжатия и архивации файлов.

zlib - предорставляет низкоуровневый доступ к библиотеке zip, что позволяет производить сжатие и восстановление данных в том числе в инкрементном режиме, а так-же работать с объектами имеющими смешанное содержимое.

gzip предоставляет высокоуровневый интерфейс для zlib на основе объектной модели.

Оба модуля поодерживают gzip формат

bz2 предоставляет интерфейс к библиотеке bzip2, реализуя три отдельных апи:

  • сжатие/распаковки объекта целиком в памяти
  • итеративное сжатие/распаковка для работы с потоками
  • запись/чтение данных в file like стиле

lzma - поддержка lzma формата: .lzma и .xz файлов

Все эти библиотеки нежелательно использовать для непосредственного сжатия распаковки, т.к. объект будет храниться в памяти как в исходном виде, таки запакованном/распактованном, что при большом объеме означает избыточное потребление. Крмое того, библиотеки поддерживают разные уровни сжатия. Степень сжатия зависит от упорядоченности сжимаемого объекта - в ряде случаев крайне неупорядоченные объекты при сжатии могут оказаться больше исходных. Чем выше степень сжатия, тем больше времени требуется на работу архиватора. Внимательно смотри на дефольтные усчтновки сжатия - библиотека может упаковывать объенкт и вовсе не сжимая.

tarfile предоставляет высокоуровневый интерфейс для чтения/записи тар-архивов Unix, в .т.ч сжатых файлов (в т.ч. gzip, bz2 и lzma). Поддерживает:

  • тестирование архива
  • извлечение и запись метаданных
  • извлечение файлов архива
  • работа со сжатыми данными

zipfile реализует чтение и запись .zip файлов. Так-же поддерживает:

  • тестирование архива
  • извлечение и запись метаданных
  • извлечение файлов архива
  • работа со сжатыми данными

При этом zipfile не поддерживает многодисковые архивы

Интерфейс всех библиотек схож

Смотри еще: