2012-10-08 20 views
12

我使用的是ZipFile包來在Python中壓縮文件。這是我的代碼:如何使用Python中的Zipfile將文件壓縮成扁平化的目錄結構?

archive = zipfile.ZipFile(join(settings.ARCHIVES_DIR, 'test.zip'), "a") 

for pdffile in glob.glob(join(settings.IBILLING_DIR, '*.pdf')): 
    archive.write(pdffile) 

archive.close() 

我面臨的問題是,創建的ZIP文件包含目錄結構。添加的文件將添加完整的路徑,這意味着提取存檔的用戶也將獲得目錄結構。我想添加文件到ZIP但沒有任何目錄結構。

我該怎麼做?我沒有在文檔中找到這些信息。

感謝

+0

嘗試使用'os.walk',而不是glob? – wim

回答

17

首先添加

import os 

然後修改archive.write線爲:

archive.write(pdffile, os.path.basename(pdffile)) 

此規定,各PDF應該被寫入zip文件與路徑相當於只有您正在讀取它的路徑的文件名部分(通過指定arcname parameter for the write() call)。

但是請注意,這意味着如果在不同的目錄中有兩個具有相同名稱的PDF文件,則會覆蓋另一個。

相關問題