1

没有足够的 zstd 压缩示例。我正在使用 zstandard 0.8.1,尝试一次压缩 2 个字节。在使用时遇到了https://anaconda.org/rolando/zstandardwrite_to(fh),但不知道如何使用它。下面是我尝试从文件中读取一个chuck字节的部分代码,然后压缩每个chuck,cctx = zstd.ZstdCompressor(level=4) with open(path, 'rb') as fh: while True: bin_data = fh.read (2) #read 2 bytes if not bin_data: break compressed = cctx.compress(bin_data) fh.close()

with open(path, 'rb') as fh:
    with open(outpath, 'wb') as outfile:
        outfile.write(compressed)
        ...

但是我应该如何使用 write_to()?

4

1 回答 1

2

我想我找到了使用 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
于 2018-01-12T10:05:40.793 回答