如何zstd从输入文件中压缩一大块字节?

Posted

技术标签:

【中文标题】如何zstd从输入文件中压缩一大块字节?【英文标题】:How to zstd compress a chunk of bytes from an input file? 【发布时间】:2018-01-11 08:45:36 【问题描述】:

没有足够的 zstd 压缩示例。我正在使用 zstandard 0.8.1,尝试一次压缩 2 个字节。在使用write_to(fh) 时遇到https://anaconda.org/rolando/zstandard,但不知道如何使用它。下面是我尝试从文件中读取一个chuck字节的部分代码,然后压缩每个chuck, cctx = zstd.ZstdCompressor(level=4) 使用 open(path, 'rb') 作为 fh: 而真: 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

【讨论】:

以上是关于如何zstd从输入文件中压缩一大块字节?的主要内容,如果未能解决你的问题,请参考以下文章

在 python 中压缩文件时如何保留目录?

如何从流/渲染字典中压缩 html 文件?

如何仅使用 Windows 的内置功能从脚本中压缩或解压缩?

如何使用Windows的内置功能从脚本中压缩或解压缩?

如何读取Hadoop中压缩的文件

如何在 TYPO3 中压缩我的 js/css 文件