2012-03-13 48 views
5

提交如果我做這樣的事情:蟒蛇如何追加在zip壓縮包

from zipfile import ZipFile 

zip = ZipFile(archive, "a") 

for x in range(5): 
    zip.writestr("file1.txt", "blabla") 

這將創建5個文件都命名爲「FILE1.TXT」的歸檔。我想實現的是每個循環迭代附加一個壓縮文件。是否有可能沒有某種輔助緩衝區,以及如何做到這一點?

+0

@MoSander:我認爲mnowotka希望能夠在歸檔中添加內容到一個文件,不是一個文件附加到檔案。 – abw333 2015-11-21 21:17:22

+0

@ abw333是的,我現在也看到了。將檔案追加到檔案中是我在這篇文章中想要做的* – 2015-11-25 09:40:39

回答

3

這是不可能的壓縮文件包,但在gzip支持寫入壓縮文件:

import gzip 
content = "Lots of content here" 
f = gzip.open('/home/joe/file.txt.gz', 'wb') 
f.write(content) 
f.close() 
+3

但gzip只能包含一個檔案。 – Dikei 2012-03-13 09:02:30

+0

是的,但它可以與[tarfile](http://docs.python.org/library/tarfile.html)或[zipfile](http://docs.python.org/library/zipfile.html )。 – 2012-03-13 09:07:52

+1

與tar一起使用時,不能直接寫入這樣的單個文件:) – Dikei 2012-03-13 09:10:12

5

它很可能追加使用Python文件到壓縮歸檔。

在測試了Linux Mint的14,Python 2.7版

import zipfile 

#Create compressed zip archive and add files 
z = zipfile.ZipFile("myzip.zip", "w",zipfile.ZIP_DEFLATED) 
z.write("file1.ext") 
z.write("file2.ext") 
z.printdir() 
z.close() 

#Append files to compressed archive 
z = zipfile.ZipFile("myzip.zip", "a",zipfile.ZIP_DEFLATED) 
z.write("file3.ext") 
z.printdir() 
z.close() 

#Extract all files in archive 
z = zipfile.ZipFile("myzip.zip", "r",zipfile.ZIP_DEFLATED) 
z.extractall("mydir") 
z.close() 
+0

我相信這個問題的明確解讀是,OP想要附加到'file1.ext',在多次迭代中向該現有文件添加額外的內容,而不是添加額外的文件。 – 2018-02-28 16:12:43