Python Glossary English

все Python 3bz2понятие

bz2.BZ2Compressor

потоковое сжатие

Объект для потокового сжатия bzip2 по кускам: данные подаются частями, сжатый результат собирается из ответов compress() и flush().

Синтаксис

c = bz2.BZ2Compressor(compresslevel=9)

compress() часто возвращает пустые байты — bzip2 копит блок до 900 КБ, — и это не ошибка: всё накопленное отдаёт flush(). Забытый flush() даёт обрезанный архив. После flush() объект одноразовый: следующий compress() вызывает ValueError, для нового потока нужен новый компрессор.

Примеры

import bz2
c = bz2.BZ2Compressor()
parts = [c.compress(b'abc' * 1000) for _ in range(3)]
print(parts)  # → [b'', b'', b''] — всё ещё в буфере
data = b''.join(parts) + c.flush()
print(bz2.decompress(data) == b'abc' * 3000)  # → True
try:
    c.compress(b'more')
except ValueError as e:
    print(e)  # → Compressor has been flushed

См. также

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

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