2012-01-13 24 views
28

Ho un archivio zip: my_zip.zip. All'interno è presente un file txt, il cui nome non lo so. Stavo dando un'occhiata al modulo zipfile di Python (http://docs.python.org/library/zipfile.html), ma non riuscivo a dare troppo senso a quello che sto cercando di fare.recupera l'elenco dei file contenuti in un file zip

Come avrei fatto l'equivalente di 'doppio click' il file zip per ottenere il file txt e quindi utilizzare il file txt in modo che io possa fare:

>>> f = open('my_txt_file.txt','r') 
>>> contents = f.read() 

risposta

43

Quello che ti serve è ZipFile.namelist() che ti darà un elenco di tutti i contenuti dell'archivio, puoi quindi fare un zip.open('filename_you_discover') per ottenere il contenuto di quel file.

+3

Oppure usa ['infolist()'] (https://docs.python.org/2/library/zipfile.html#zipfile.ZipFile.infolist) se vuoi ottenere altri dettagli; come la Dimensione Data Modificata o Compressa –

+1

Esiste un metodo che restituisce i nomi dei file come iteratore piuttosto che come lista? – Elliott

12
import zipfile 

zip=zipfile.ZipFile('my_zip.zip') 
f=zip.open('my_txt_file.txt') 
contents=f.read() 
f.close() 

È possibile consultare la documentazione here. In particolare, il metodo namelist() ti darà i nomi dei membri del file zip.

+1

Viene visualizzato un errore in cui si dice che "Nell'archivio non è presente alcun articolo denominato" ". Si noti che io ** non so ** come viene chiamato il nome del file che è zippato (ed è diverso dal nome dell'archivio zip). – David542

+0

Perché i downvotes? –