Как ZSTD сжать кусок байтов из входного файла?
Не хватает примера на сжатие ZSTD. Я использую zstandard 0.8.1, пытаясь сжать 2 байта за раз. Наткнулся на https://anaconda.org/rolando/zstandard по использованию write_to(fh)
, но не уверен, как его использовать. Ниже мой частичный код пытается прочитать байты чака из файла, затем сжимает каждый чак,
cctx = zstd.ZstdCompressor(level=4) с open(path, 'rb') как fh:
while True:
bin_data = fh.read(2) # прочитайте 2 байта, если не bin_data: сжатый разрыв = cctx.compress(bin_data)
fh.close()
with open(path, 'rb') as fh:
with open(outpath, 'wb') as outfile:
outfile.write(compressed)
...
Но как мне использовать write_to()?
1 ответ
Я думаю, что нашел правильный способ использовать модуль zstd 0.8.1 для потоковой передачи байтов:
with open(filename, 'wb') as fh:
cctx = zstd.ZstdCompressor(level=4)
with cctx.write_to(fh) as compressor:
compressor.write(b'data1')
compressor.write(b'data2')
with open(filename, 'rb') as fh:
cctx = zstd.ZstdCompressor(level=4)
for chunk in cctx.read_from(fh, read_size=128, write_size=128):
#do something