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