python-3.x - 使用带有 LZMA 压缩的“tarfile”时如何设置压缩级别?
问题描述
tarfile
有没有办法在使用Python 中的 LZMA ( ) 压缩模块创建存档时设置压缩级别*.xz
?
我正在使用以下构造,我想知道方法的compresslevel
关键字参数是否tarfile.open
也适用于 LZMA 压缩?
tarfile.open(tar_file_path, 'w:xz', compresslevel=9) as tf:
...
该文档对此有些无益...
解决方案
看起来 'compresslevel' 不是 'tarfile' 中的一个选项。
使用“lzma”模块是可能的。
压缩设置可以指定为预设压缩级别(使用预设参数),也可以详细指定为自定义过滤器链(使用过滤器参数)。
预设参数(如果提供)应该是介于 0 和 9(含)之间的整数,可选择与常量 PRESET_EXTREME 进行或运算。如果既没有给出预设也没有给出过滤器,默认行为是使用 PRESET_DEFAULT(预设级别 6)。较高的预设会产生较小的输出,但会使压缩过程变慢。
import lzma
my_filters = [
{"id": lzma.FILTER_DELTA, "dist": 5},
{"id": lzma.FILTER_LZMA2, "preset": 7 | lzma.PRESET_EXTREME},
]
with lzma.open("file.xz", "w", filters=my_filters) as f:
f.write(b"blah blah blah")
推荐阅读
- laravel - 如果低优先级作业需要很长时间才能完成,工匠队列中的低优先级作业会停止执行高优先级任务吗?
- java - 如何将.dex文件转换为android studio项目
- x86-16 - 如何打印存储在变量中的整数
- python - 混合龙卷风和 sqlalchemy
- java - 在java中使用opencv录制和保存视频流
- r - ggplot构面图重新排序未按预期工作
- algorithm - 我正在努力为我的家庭作业找到有效的解决方案。冒泡排序还是插入排序?
- php - php - 基于范围键返回数组
- kubernetes - 将 2 个不同的 statefulSet 连接到同一个 PV
- architecture - 在 DDD 的上下文中应该如何处理事务