2012-03-13 19 views
5

Se faccio qualcosa di simile:pitone come aggiungere al file in archivio zip

from zipfile import ZipFile 

zip = ZipFile(archive, "a") 

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

Si creerà un archivio con 5 file di tutto il nome di "file1.txt". Quello che voglio ottenere è avere un file compresso al quale ogni iterazione del loop aggiunge del contenuto. È possibile senza avere una sorta di buffer ausiliario e come farlo?

+0

@MoSander: Penso che mnowotka vuole accodare contenuti in un unico file all'interno dell'archivio, senza aggiungere un file per l'archivio. – abw333

+0

@ abw333 si, lo vedo anche io ora. L'aggiunta di un file all'archivio era ciò che * I * volevo fare quando sono arrivato a questo post;) –

risposta

3

E 'impossibile con il pacchetto zipfile ma la scrittura di file compressi è supportato in gzip:

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

Ma gzip può contenere solo un file. – Dikei

+0

Sì, ma può essere utilizzato insieme a [tarfile] (http://docs.python.org/library/tarfile.html) o [zipfile] (http://docs.python.org/library/zipfile.html). –

+1

Quando lo si utilizza con tar, non è più possibile scrivere direttamente in un singolo file come questo :) – Dikei

5

sua del tutto possibile aggiungere file ad archivio compresso utilizzando Python.

provata su 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

Credo che la chiara lettura della domanda sia che l'OP vuole aggiungere "file1.ext", aggiungendo contenuto aggiuntivo a quel file esistente in più iterazioni, invece di aggiungere altri file. –

Problemi correlati