zstd compressobj() 在 python 0.8.1 中不起作用?

Posted

技术标签:

【中文标题】zstd compressobj() 在 python 0.8.1 中不起作用?【英文标题】:zstd compressobj() not working in python 0.8.1? 【发布时间】:2018-02-27 07:10:04 【问题描述】:

使用这个python模块zstd 0.8.1还是很新的。我对以下内容进行了测试,

import zstd

cctx = zstd.ZstdCompressor()
zstd_data = cctx.compress(b'aaaaa')
len(zstd_data)
Out[34]: 14  #this is my output

但是当我这样做时,

cobj = cctx.compressobj()
zstd_data = cobj.compress(b'aaaaa')
len(zstd_data)
Out[39]: 0  #why the length is 0?

我的错误是什么?

【问题讨论】:

【参考方案1】:

我知道这已经有一段时间了,但我想我会为在 Google 上看到此页面的任何人回答。

您似乎正在使用 python-zstandard 库 (https://github.com/indygreg/python-zstandard/issues)。需要注意的是,在示例中,ZstdCompressor 对象演示的最后一行使用zstd_data = cobj.flush()。添加该行后,它应该可以工作。

或者,如果您更喜欢simple API:

cctx = zstd.ZstdCompressor()
compressed = cctx.compress(b'data to compress')

您的第二个示例不包括flush() 步骤,这是compressobj() 所必需的

【讨论】:

以上是关于zstd compressobj() 在 python 0.8.1 中不起作用?的主要内容,如果未能解决你的问题,请参考以下文章

Linux内核更新到5.19支持经Zstd压缩过的固件

使用Zstd压缩算法可以使Ubuntu 18.04安装速度提高10%

更强的压缩比!PostgreSQL开始支持Zstd

Linux 5.7 内核正在支持 Zstd 压缩算法

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

Arch Linux现在开始使用 zstd 替代 xz 进行软件包压缩