все 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Сообщить о неточности