首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用PyLZMA和py7zlib递归地将文件夹压缩为7z

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

Stack Overflow用户
提问于 2012-10-29 22:32:54
回答 1查看 4.6K关注 0票数 1

经过多次尝试和错误,我已经找到了如何通过PyLZMA来使lzma压缩文件,但是我希望将一个文件夹及其所有文件/目录递归压缩到一个7z文件的任务看起来很简单。我只想通过7z.exe来完成它,但在它完成之前,我似乎无法捕捉到进程的数据,我想要一些每-7z文件的进度,因为我将压缩大小从几百到超过1TB的文件夹。不幸的是,我无法提供我尝试过的任何代码,因为我看到的唯一使用py7zlib的例子是从已有的文件中提取文件。有没有人对这两者的结合有任何运气,或者可以提供一些帮助?

值得注意的是,这将在Windows上使用python2.7。如果这里可能出现一些神奇的多线程,特别是考虑到lzma压缩看起来是多么缓慢(然而,时间在这里并不是一个问题),就会得到额外的积分。提前感谢!

EN

回答 1

Stack Overflow用户

发布于 2012-10-30 00:14:09

一个纯Python的替代方法是使用标准库.tar.xz模块和liblzma包装器模块pyliblzma组合创建liblzma文件。这将创建与.7z档案大小相当的文件:

代码语言:javascript
复制
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文件创建进度的可能策略:

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13130634

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档