如何使用7zip压缩而不是zip,代码更改

时间:2012-07-13 08:11:30

标签: python

我有一个代码用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))

2 个答案:

答案 0 :(得分:7)

您可以尝试命令行方法

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

或文件夹

中的所有文件
subprocess.call(['7z', 'a', filename+'.7z', "*.*"])

答案 1 :(得分:0)

似乎没有一个好的Python模块可用于创建7z存档(尽管文档中说过,py7zlib只能读取它们)。

解决方法是下载7z SDK(http://www.7-zip.org/sdk.html)并通过子进程模块使用随附的7zr可执行文件。 7z属于公共领域,因此您可以无限制地携带此独立程序。