2010-12-15 64 views
0

我想單獨拉鍊一堆文件夾。這些文件夾包含文件。我寫了一個腳本,似乎完美工作,除了生成的zip文件沒有實際壓縮。 THey與原始目錄的大小相同!與Python的郵編目錄

這裏是我的代碼:

import os, zipfile 

workspace = "C:\\ziptest" 

dirList = os.listdir(workspace) 

def zipDir(path, zip): 
    for root, dirs, files in os.walk(path): 
    for file in files: 
     zip.write(os.path.join(root, file)) 

for item in dirList: 
    zip = zipfile.ZipFile('%s.zip' % item, 'w') 
    zipDir('C:\\ziptest\%s' % item, zip) 
    zip.close() 

回答

3

我不是一個Python的專家,但快速查找表明,有對zip.write如zipfile.ZIP_DEFLATED另一種說法。我從here那裏抓起來的。我引用:

寫入方法的第三個可選參數控制要使用的壓縮方法。或者說,它控制着數據是否應該被壓縮。默認值爲zipfile.ZIP_STORED,它將數據存儲在歸檔中,而不進行任何壓縮。如果安裝了zlib模塊,您還可以使用zipfile.ZIP_DEFLATED,它可以讓您「放氣」壓縮。

參考文獻是here。尋找常量ZIP_DEFLATED;它的定義如下:

通常的ZIP壓縮方法的數值常量。這需要zlib模塊。目前不支持其他壓縮方法。

我想這意味着只支持默認壓縮......希望有幫助!

0

是否有任何理由,你不只是調用shell命令,就像

def zipDir(path, zip): 
    subprocess.Popen('7z a -tzip %s %s'%(path, zip)) 
+2

Python有直接的zip文件支持,是跨平臺的,並且不依賴於外部程序......這就是原因。 – 2011-06-23 22:26:01