如何使用py7zr设置压缩等级?能否强制设为最高等级?
py7zr压缩等级设置说明
核心结论
py7zr默认并非使用最高压缩等级,且完全可以手动强制设置为最高等级。你看到的preset参数确实就是控制压缩等级的关键,可能是查看源码时没对应到正确的映射逻辑。
具体配置方法
py7zr里的PRESET_DEFAULT对应压缩等级6,最高压缩等级是9(可通过常量PRESET_MAX直接引用)。要启用最高压缩,只需在创建SevenZipFile时指定包含对应preset的filters配置:
import py7zr from py7zr import FILTER_LZMA2, PRESET_MAX # 使用最高压缩等级创建压缩包 with py7zr.SevenZipFile("test.7z", 'w', filters=[{'id': FILTER_LZMA2, 'preset': PRESET_MAX}]) as archive: archive.write("somefile.txt")
也可以直接传入数字9替代PRESET_MAX,效果完全一致:
filters=[{'id': FILTER_LZMA2, 'preset': 9}]
补充细节
- 压缩等级范围是1到9,数字越大压缩率越高,但压缩速度越慢,内存占用也越高;
- 不指定
filters参数时,py7zr默认使用PRESET_DEFAULT(等级6)的LZMA2压缩; preset参数直接映射到底层lzma库的压缩等级,源码里的逻辑是将该值传递给lzma的压缩配置,所以确实是控制压缩等级的参数。
内容的提问来源于stack exchange,提问作者Steven Venham
相关产品推荐
相关产品推荐

