gpt4 book ai didi

python - 使用 PyLZMA 和 py7zlib 将文件夹递归压缩为 7z

转载 作者:太空宇宙 更新时间:2023-11-03 19:10:27 24 4
gpt4 key购买 nike

经过多次试验和错误,我已经弄清楚如何通过 PyLZMA 制作 lzma 压缩文件,但我想复制看似简单的任务,将文件夹及其所有文件/目录递归压缩为 7z 文件。我只想通过 7z.exe 来完成此操作,但在完成之前我似乎无法捕获该过程的标准输出,并且我想要一些每个 7z 文件的进度,因为我将压缩数百个文件夹大小超过 1 TB。不幸的是,我无法提供我尝试过的任何代码,只是因为我见过的使用 py7zlib 的唯一示例是从预先存在的文件中提取文件。有没有人将这两者结合起来有运气或者可以提供一些帮助?

就其值(value)而言,这将在 Windows 上使用 python 2.7。如果这里可能发生一些神奇的多线程,特别是考虑到 lzma 压缩看起来有多慢(但是,时间在这里不是问题),那就加分了。提前致谢!

最佳答案

纯 Python 替代方案是结合标准库 tarfile 创建 .tar.xz 文件。模块和 liblzma包装模块pyliblzma 。这将创建与 .7z 存档大小相当的文件:

import tarfile
import lzma

TAR_XZ_FILENAME = 'archive.tar.xz'
DIRECTORY_NAME = '/usr/share/doc/'

xz_file = lzma.LZMAFile(TAR_XZ_FILENAME, mode='w')

with tarfile.open(mode='w', fileobj=xz_file) as tar_xz_file:
tar_xz_file.add(DIRECTORY_NAME)

xz_file.close()

棘手的部分是进度报告。上面的示例对 tarfile.TarFile 的目录使用递归模式。类,所以有add在添加整个目录之前,方法不会返回。

以下问题讨论了监控 tar 文件创建进度的可能策略:

关于python - 使用 PyLZMA 和 py7zlib 将文件夹递归压缩为 7z,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13130634/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com