用Python模拟7zip

5
我正在使用Python 3.6版本,目前我通过子进程调用7zip程序来获得所需的压缩。我知道zipfile类有“ZIP_LZMA”压缩,但是我传递给应用程序的输出文件不正确。那么我还需要添加什么到ZipFile类中才能模仿上面的命令呢?

2
ZIP文件和7Z文件是不同的。即使现在ZIP文件可能支持LZMA压缩,但这两种文件仍然有所不同。或许可以参考https://dev59.com/_1wY5IYBdhLWcg3wTGBu? - AKX
有没有可以进行7zip压缩的软件包? - code base 5000
@codebase5000,也许这个库可以使用 https://github.com/fancycode/pylzma ? - Tarun Lalwani
Pylzma是一个不错的建议。 - JabberJabber
2
也许我应该增加赏金,听起来 Python 真的需要这个功能。 - code base 5000
显示剩余2条评论
1个回答

2
如果你不太关心Windows,那么也许libarchive可以帮助你。例如,在Ubuntu中: libarchive
$ sudo apt install python3-libarchive-c

然后:

import libarchive
with libarchive.file_writer('test.7z', '7zip') as archive:
    archive.add_files('first.file', 'second.file', 'third.file')

接下来是pylib7zip库,它包装了现有的7z.dll,并似乎提供了一个仅限于Windows的替代方案。


似乎 lib archive-c 在构建时失败了。 - JabberJabber
Pylib7zip是7z.dll的包装器,因此理论上应该也能够从中挤出压缩 - FileOutStream类的存在确实给了一些希望。 - KT.
若要构建python_libarchive_c,你可能需要安装必要的依赖项(例如libarchive-dev)。总之,预先构建的Ubuntu软件包在某种程度上是可以工作的。 - KT.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接