2010-08-10 22 views
140

Ich lese durch die ZIPfile-Module docs, aber konnte nicht verstehen, wie eine Datei entpacken, nur wie eine Datei zip. Wie entzippe ich den gesamten Inhalt einer Zip-Datei in das gleiche Verzeichnis?Entpacken von Dateien in Python

Antwort

235
import zipfile 
zip_ref = zipfile.ZipFile(path_to_zip_file, 'r') 
zip_ref.extractall(directory_to_extract_to) 
zip_ref.close() 

Das ist so ziemlich!

+5

Was ist, wenn der Inhalt des ZIP-Archivs identisch sind, in allen ZIP-Archiven? Wie wird der Inhalt vor dem Extrahieren umbenannt? Beispiel: 1.zip 2.zip .. alle enthalten content.txt: extrahieren alle wie 1content.txt 2content.txt? – iratzhash

+1

@Rahul - und welche Bibliothek importiere ich? – 3kstc

+1

@ 3kstc 'import zipfile' –

15

Verwenden Sie die extractall Methode, wenn Sie Python verwenden 2.6+

zip = ZipFile('file.zip') 
zip.extractall() 
+0

Muss nicht angegeben werden ein Ziel (zip.extractall (Ziel))? – asonnenschein

+2

Nicht, wenn Sie nur in das gleiche Verzeichnis extrahieren wie die ZIP-Datei –

+3

@DanGayle scheint die ZIP-Datei in das aktuelle Arbeitsverzeichnis zu extrahieren, NICHT den Speicherort der ZIP-Datei –

106

Wenn Sie Python verwenden 3.2 oder höher:

import zipfile 
with zipfile.ZipFile("file.zip","r") as zip_ref: 
    zip_ref.extractall("targetdir") 

Sie nicht die Nähe verwenden müssen oder versuchen/Fang damit an, wie es die context manager Konstruktion verwendet

+10

ZipFile funktioniert auch als Context Manager in 2.7 oder später: https://docs.python.org/2/library/zipfile.html#zipfile.ZipFile – blueCat

Verwandte Themen