2012-03-13 10 views
5

में दाखिल करने के लिए संलग्न करने के लिए:अजगर कैसे मैं कुछ इस तरह करते हैं ज़िप संग्रह

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

+0

@ abw333 हाँ, मैं अब भी इसे देखता हूं। संग्रह में एक फ़ाइल संलग्न करना था * मैं * जब मैं इस पोस्ट में आया था तो करना चाहता था;) –

उत्तर

3

यह zipfile पैकेज के साथ असंभव है लेकिन कंप्रेस फ़ाइलों के लिए लिख 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

+0

हाँ, लेकिन इसका उपयोग [tarfile] (http://docs.python.org/library/tarfile.html) या [zipfile] के साथ किया जा सकता है (http://docs.python.org/library/zipfile.html)। –

+1

जब आप इसे टैर के साथ उपयोग करते हैं, तो आप इस तरह की एक फ़ाइल पर सीधे लिख नहीं सकते :) :) – Dikei

5

इसकी बहुत संभव अजगर का उपयोग कर संकुचित संग्रह करने के लिए फ़ाइलों को संलग्न करने के लिए।

linux टकसाल 14 पर परीक्षण किया गया, अजगर 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

मेरा मानना ​​है कि प्रश्न का स्पष्ट पठन यह है कि ओपी 'file1.ext' में जोड़ना चाहता है, अतिरिक्त फाइलों को जोड़ने के विपरीत, मौजूदा पुनरावृत्ति में उस मौजूदा फ़ाइल में अतिरिक्त सामग्री जोड़ना चाहता है। –