Python Glossary English

все Python 3zlibфункция

zlib.decompress()

сжатие

Распаковывает байты, сжатые zlib; параметр wbits выбирает формат: zlib, gzip или «сырой» DEFLATE.

Синтаксис

zlib.decompress(data, /, wbits=15, bufsize=16384)

С умолчанием wbits=15 понимает только формат zlib: данные из gzip.compress падают с «incorrect header check». Для gzip нужен wbits=31, для автоопределения zlib/gzip — 47, для сырого DEFLATE (как внутри ZIP) — -15. Обрезанный поток даёт zlib.error с кодом -5. Результат собирается в памяти целиком — для чужих данных (zip-бомба) безопаснее decompressobj() с max_length.

Примеры

import gzip, zlib
gz = gzip.compress(b'data')
try:
    zlib.decompress(gz)
except zlib.error as e:
    print(e)  # → Error -3 while decompressing data: incorrect header check
print(zlib.decompress(gz, wbits=31))  # → b'data'
print(zlib.decompress(gz, wbits=47))  # → b'data'
import zlib
packed = zlib.compress(b'abc' * 100)
try:
    zlib.decompress(packed[:-4])
except zlib.error as e:
    print(e)  # → Error -5 while decompressing data: incomplete or truncated stream

См. также

Частые ошибки

Открыть в полном глоссарииdocs.python.orgСообщить о неточности