2016-06-05 10 views
0

Mein existierender Code (ein Abschnitt) befindet sich am Ende dieses Posts.Auszug aus dem Verzeichnis innerhalb der Zip-Datei

Was ich tun möchte, ist alle Dateien aus einem Verzeichnis innerhalb einer ZIP-Datei zu extrahieren. Nicht der gesamte Inhalt einer Zip-Datei, sondern nur die Dateien in einem Verzeichnis (/theme_files/), das sich in einem Zip befindet. Ich habe die notwendigen Bibliotheken bereits importiert.

Extrahieren Sie die Dateien aus [filename].tpk/theme_files in ./workspace/[output]/

(.tpk = .zip)

theme_zip = zipfile.ZipFile(current_dir + "/themes/" + theme_name + ".tpk", 'r') 
theme_zip.extractall(output_dir) 
theme_zip.close() 

Antwort

0
for item in (f for f in theme_zip.filelist if 'theme_files/' in f.filename): 
    theme_zip.extract(item, output_dir) 
+0

Dies funktioniert nur, um den Ordner 'theme_files' in die Ausgabe zu kopieren. eine Idee wie man den Inhalt von 'theme_files' in die Ausgabe extrahiert? – spikespaz

+0

Es sollte den Ordner und alles, was es enthält, extrahieren. Passiert das nicht für dich? –

+0

Nein. Es extrahiert den gesamten Ordner und speichert ihn in "output_dir" – spikespaz

-1

in den spezifischen Unterordner mit regex die Dateinamen suchen. + Extrahiere sie Datei für Datei:

with open('<file-name>.zip', 'rb') as f: 
    zf = zipfile.ZipFile(f) 
    for file in [m.group() for m in (re.search(r'/theme/(.+)', file) for file in file_list) if m]: 
     zf.extract(file) 
Verwandte Themen