Source: Архивация в python

← Rendered

markdown source:

---
description: Архивация в стандартной библиотеке
tags: python-standart-library python
title: Архивация в python
---
Реализовано несколько встроенных модулей для сжатия и архивации файлов.

[zlib](https://docs.python.org/3/library/zlib.html#module-zlib) - предорставляет низкоуровневый доступ к библиотеке zip, что позволяет производить сжатие и восстановление данных в том числе в инкрементном режиме, а так-же работать с объектами имеющими смешанное содержимое.

[gzip](https://docs.python.org/3/library/gzip.html#module-gzip) предоставляет высокоуровневый интерфейс для zlib на основе объектной модели.

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

[bz2](https://docs.python.org/3/library/archiving.html) предоставляет интерфейс к библиотеке bzip2, реализуя три отдельных апи:

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

[lzma](https://docs.python.org/3/library/lzma.html) - поддержка lzma формата: `.lzma` и `.xz` файлов

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

[tarfile](https://docs.python.org/3/library/tarfile.html) предоставляет высокоуровневый интерфейс для чтения/записи тар-архивов Unix, в .т.ч сжатых файлов (в т.ч. `gzip`, `bz2` и `lzma`). Поддерживает:

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

[zipfile](https://docs.python.org/3/library/zipfile.html) реализует чтение и запись `.zip` файлов. Так-же поддерживает:

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

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

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

Смотри еще:

- [[python-standart-library]]
- [[data-storage-python]]


[python-standart-library]: ../lists/python-standart-library "Стандартная библиотека python и полезные ресурсы"
[data-storage-python]: data-storage-python "Pickle, shelve, dbm"