Как 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
Другие вопросы по тегам