2015-12-14 15 views
5

Sto usando il modulo zipfile di python.
Avere un file zip situata in un percorso di:
/home/user/a/b/c/test.zip
E avere un altro file creato sotto /home/user/a/b/c/1.txt voglio aggiungere questo file zip esistente, l'ho fatto:
zip = zipfile.ZipFile('/home/user/a/b/c/test.zip','a') zip.write('/home/user/a/b/c/1.txt') zip.close()Aggiunta di file a file zip esistente

e ottenuto tutte le sottocartelle appare nel percorso quando si decomprime il file, come faccio a inserire il file zip senza le sottocartelle del percorso?

Ho provato anche: zip.write(os.path.basename('/home/user/a/b/c/1.txt')) E ho ricevuto un errore che il file non esiste, anche se lo fa.

Nota: Non sto utilizzando i valori codificati nei percorsi in questo esempio solo per semplificarlo.

risposta

7

avete ottenuto molto vicino:

zip.write(path_to_file, os.path.basename(path_to_file)) 

dovrebbe fare il trucco per voi.

Spiegazione: La funzione zip.write accetta un secondo argomento (il nome dell'arco) che è il nome file da memorizzare nell'archivio zip, vedere la documentazione per zipfile maggiori dettagli.

os.path.basename() elimina le directory nel percorso per te, in modo che il file venga archiviato nell'archivio sotto solo il suo nome.

Si noti che se si solo zip.write(os.path.basename(path_to_file)) cercherà il file nella directory corrente in cui esso (come dice l'errore) non esiste.