Архивация в python
Реализовано несколько встроенных модулей для сжатия и архивации файлов.
zlib - предорставляет низкоуровневый доступ к библиотеке zip, что позволяет производить сжатие и восстановление данных в том числе в инкрементном режиме, а так-же работать с объектами имеющими смешанное содержимое.
gzip предоставляет высокоуровневый интерфейс для zlib на основе объектной модели.
Оба модуля поодерживают gzip
формат
bz2 предоставляет интерфейс к библиотеке bzip2, реализуя три отдельных апи:
- сжатие/распаковки объекта целиком в памяти
- итеративное сжатие/распаковка для работы с потоками
- запись/чтение данных в file like стиле
lzma - поддержка lzma формата: .lzma
и .xz
файлов
Все эти библиотеки нежелательно использовать для непосредственного сжатия распаковки, т.к. объект будет храниться в памяти как в исходном виде, таки запакованном/распактованном, что при большом объеме означает избыточное потребление. Крмое того, библиотеки поддерживают разные уровни сжатия. Степень сжатия зависит от упорядоченности сжимаемого объекта - в ряде случаев крайне неупорядоченные объекты при сжатии могут оказаться больше исходных. Чем выше степень сжатия, тем больше времени требуется на работу архиватора. Внимательно смотри на дефольтные усчтновки сжатия - библиотека может упаковывать объенкт и вовсе не сжимая.
tarfile предоставляет высокоуровневый интерфейс для чтения/записи тар-архивов Unix, в .т.ч сжатых файлов (в т.ч. gzip
, bz2
и lzma
). Поддерживает:
- тестирование архива
- извлечение и запись метаданных
- извлечение файлов архива
- работа со сжатыми данными
zipfile реализует чтение и запись .zip
файлов. Так-же поддерживает:
- тестирование архива
- извлечение и запись метаданных
- извлечение файлов архива
- работа со сжатыми данными
При этом zipfile не поддерживает многодисковые архивы
Интерфейс всех библиотек схож
Смотри еще: