2013-07-20 120 views
1

我試着去創建一個文件夾的內容的zip文件使用的代碼belllow(一些目錄和文件):創建從一個目錄中的zip文件,而不是他的FULLPATH

import zip,os 

path = "c:\\tester\\folderToZip" 
zip = zipfile.ZipFile("zippedFolder.zip", "w") 
for root, dirs, files in os.walk(path): 
    for file in files: 
     zip.write(os.path.join(root, file)) 
zip.close() 

但代碼運行後,當我檢查壓縮文件,壓縮文件,而不是具有文件夾「folderToZip」(例如:f1,f2,f2,a.txt,b.txt,c.txt)的內容時,它具有完整路徑可變路徑。

所以,問題是,我如何創建一個基於文件夾內容的zipfile,但不是他的完整路徑?

回答

2

write需要第二個可選參數arcname,指定時將提供所存儲文件的名稱。用它來指定你想要的名字。

如果你只想要的文件名:

import zip,os 

path = "c:\\tester\\folderToZip" 
zip = zipfile.ZipFile("zippedFolder.zip", "w") 
for root, dirs, files in os.walk(path): 
    for file in files: 
     filename = os.path.join(root, file) 
     zip.write(filename, filename) 
zip.close() 
+0

嗨,你能給我怎麼會用一個例子? –

+0

'zip.write(os.path.join(root,file),file)'可能是你之後的@Thales –

+0

@mata嗨,它以某種方式工作,但它添加了目錄中的所有文件,但忽略了目錄結構。所以,而不是添加c:\ tester \ folderToZip \ f1 \ f2 \ f1f2.txt,它將f1f2.txt添加到郵政編碼 –

相關問題