2012-07-13 155 views
8

我有与拉链特定文件夹中的每个文件压缩代码,但我想用7zip的压缩,所以怎么办呢?如何使用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命令行客户端。 – 2012-07-13 08:14:47

+2

我知道,我需要一个例子。 – zeromancer 2012-07-13 09:01:10

回答

7

您可以尝试在命令行方式

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

或文件夹中的所有文件

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

以及如何将其落实到我的代码? – zeromancer 2012-07-13 09:10:28

+2

它不起作用。 – zeromancer 2012-07-13 09:30:46

+3

谁使用了'.7zip'扩展?每个我见过的7-zip文件都是'.7z'。 – 2014-09-15 05:38:45

0

有不似乎是一个很好的Python模块用于创建7Z压缩文件(不管什么文件说只,py7zlib能阅读他们)。

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

+0

那么https://github.com/dsoprea/PyEasyArchive呢? – Winand 2016-05-19 06:31:31

+0

它似乎可以在Linux上工作 - 但不是Windows。 – 2016-05-26 13:28:01

相关问题