2012-07-13 124 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