2017-09-29 2 views
0

Ich versuche, Python zum Entpacken aller Dateien in meinem Ordner, aber ich möchte es in einem neu entpackten Ordner mit dem gleichen Namen wie der Zip-Ordner dass sie herkamen.Wie Entpacken von Dateien in Python, aber Zip-Ordner behalten

Zum Beispiel, wenn meine Ordner "Met" hatte zwei Zip-Ordner:

folder1.zip: file1

folder2.zip: file2

Ich würde die Dateien gerne bis Ende wie folgt :

Met \ folder1 \ file1

Met \ folder2 \ Datei2

Derzeit

, setzt das Programm beiden Dateien in dem Met-Ordner:

Met \ file1 und file2

#Unzip all zip files 
zip_files = glob.glob(r"C:\Users\simon.rhee\Desktop\Met\*.zip") 

i = 1 
for u in zip_files: 
    dir_name = os.path.splitext(u[0]) 
    zip_handler = zipfile.ZipFile(u,"r") 
    zip_handler.extractall() 
    print("Unzipping File #",i,"Complete") 
+1

@ PM2Ring zumindest mit Python 3.4, 'extractall' erstellt das Verzeichnis, wenn nicht existiert. –

+0

und es funktioniert sogar mit mehr als 1 Richtung Tiefe: 'zip_handler.extractall (" foo/bar/spam ")' (nicht relevant hier, aber immer noch :)) –

Antwort

2

Zunächst fixieren Sie Ihren dir_name Ausdruck, wie es zur Zeit nicht richtig funktioniert, da es die ersten Buchstaben vorbei ist u-splitext statt der Einnahme der Radix von u

dir_name = os.path.splitext(u)[0] 

dann übergeben Sie den zusätzlichen path Argument extractall

zipfile.ZipFile.extractall(path=dir_name) 

wenn dir_name ist nicht vorhanden, es wird erstellt (getestet mit Python 3.4).

Verwandte Themen