Python 3.14+compression.zstdпонятие
compression.zstd.ZstdCompressor
потоковое сжатие
Потоковый компрессор Zstandard: данные подаются частями методом compress(), а кадр завершается вызовом flush().
Синтаксис
comp = compression.zstd.ZstdCompressor(level=None, options=None, zstd_dict=None); comp.compress(data, mode=ZstdCompressor.CONTINUE); comp.flush()
compress() часто возвращает b'': данные копятся во внутреннем буфере, и без flush() на выходе окажется неполный кадр, который decompress отвергнет. Режим ZstdCompressor.FLUSH_FRAME завершает кадр сразу, и тот же объект продолжит следующий. Размер исходных данных потоковый компрессор не знает, поэтому в заголовке его нет — если он нужен, вызовите set_pledged_input_size(n) до первого compress().
Примеры
# Python 3.14+
from compression import zstd # → ? нужна сборка CPython с libzstd
comp = zstd.ZstdCompressor()
print(comp.compress(b'abc')) # → b'' — пока всё в буфере
out = comp.compress(b'def') + comp.flush()
print(zstd.decompress(out)) # → b'abcdef'
# Python 3.14+
from compression import zstd # → ? нужна сборка CPython с libzstd
data = b'hello zstd ' * 100
comp = zstd.ZstdCompressor()
comp.set_pledged_input_size(len(data))
out = comp.compress(data) + comp.flush()
print(zstd.get_frame_info(out).decompressed_size) # → 1100
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности