如何使用7zip进行压缩而非zip,代码更改

12

我有一段代码可以将特定文件夹中的所有文件使用zip格式进行压缩,但我想使用7zip进行压缩,那么应该怎么做呢?

目前我的代码如下:

for date in dict_date:#zipping folders and get same name like the folder
    with ZipFile(os.path.join(src, '{0}.7z'.format(date)), 'w') as myzip:
        for subFolder in dict_date[date]:
            for fil in os.listdir(os.path.join(src, date, subFolder)):
                if not fil.endswith('.7z'):
                    myzip.write(os.path.join(src, date, subFolder, fil))

4
改变文件扩展名不会改变文件格式或压缩算法。您需要通过子进程调用来调用7zip命令行客户端。 - Uku Loskit
2个回答

13

您可以尝试命令行方法

import subprocess
subprocess.call(['7z', 'a', filename+'.7z', filename])

或者对于文件夹中的所有文件

subprocess.call(['7z', 'a', filename+'.7z', "*.*"])

0

目前似乎没有一个好的Python模块可以创建7z归档文件(尽管文档中提到,py7zlib只能读取它们)。

一种解决方法是下载7z SDK(http://www.7-zip.org/sdk.html),并通过subprocess模块使用其中附带的7zr可执行文件。7z属于公共领域,因此您可以自由携带这个独立程序。


似乎这在Linux上可以工作,但在Windows上不行。 - David K. Hess

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