import zlib zlib.decompress(data, wbits=MAX_WBITS, bufsize=DEF_BUF_SIZE)
data
- сжатые байты,wbits=MAX_WBITS
- управляет размером буфера, форматом заголовка и трейлера,bufsize=DEF_BUF_SIZE
- начальный размер выходного буфера.Функция decompress()
модуля zlib
распаковывает сжатые данные представленные как байты, возвращая объект байтов, содержащий несжатые данные.
Если задано значение аргумента bufsize
, оно используется в качестве начального размера выходного буфера.
Вызывает исключение zlib.error
, если возникает какая-либо ошибка.
Параметр wbits
управляет размером буфера истории или "размером окна" и ожидаемым форматом заголовка и трейлера. Он похож на параметр для функции zlib.compressobj()
, но принимает больше диапазонов значений:
zlib
и трейлер.zlib
. Поддерживается только начиная с версии библиотеки zlib
1.2.3.5.wbits
в качестве логарифма размера окна. Входными данными должен быть необработанный поток без заголовка или трейлера.gzip
и трейлер.zlib
или gzip
.При распаковке потока размер окна не должен быть меньше размера, первоначально использовавшегося для сжатия потока. Использование слишком маленького значения может привести к исключению zlib.error
. Значение wbits
по умолчанию соответствует наибольшему размеру окна и требует включения заголовка и трейлера библиотеки zlib
.
Аргумент bufsize
- это начальный размер буфера, используемого для хранения распакованных данных. Если требуется больше места, размер буфера будет увеличиваться по мере необходимости, поэтому вам не нужно точно определять это значение. Его настройка сохранит только несколько вызовов malloc()
.
>>> import zlib # создадим массив данных >>> text = 'Привет docs-python.ru ' >>> data = [] >>> for _ in range(10): ... data.append(text * 20) ... # преобразование текста в байты >>> byte_data = '\n\n'.join(data).encode('utf-8') # сжимаем данные >>> compress = zlib.compress(byte_data, level=-1) # распаковываем сжатые данные в буфер >>> decompress = zlib.decompress(compress) # преобразуем байты в текст >>> text = decompress.decode('utf-8') # выведем на печать первые 22 символа >>> text[0:22] # 'Привет docs-python.ru Привет'