2012-05-07 2 views
5

Ich muss einen Ordner komprimieren, der eine .xml-Datei und eine .fgdb-Datei enthält, mithilfe von Python. Könnte mir jemand helfen? Ich habe ein paar Skripts ausprobiert, die ich im Internet gefunden habe, aber es gibt immer ein technisches Problem (z. B. das Erstellen einer leeren Zip-Datei oder das Erstellen einer Zip-Datei.)ZIP-Ordner mit Unterordner in Python

Vielen Dank im Voraus.

Antwort

6

Der Schlüssel zum Funktionieren ist die Funktion os.walk(). Hier ist ein Skript, das ich in der Vergangenheit zusammengestellt habe und das funktionieren sollte. Lass es mich wissen, wenn du irgendwelche Ausnahmen bekommst.

import zipfile 
import os 
import sys 

def zipfolder(foldername, target_dir):    
    zipobj = zipfile.ZipFile(foldername + '.zip', 'w', zipfile.ZIP_DEFLATED) 
    rootlen = len(target_dir) + 1 
    for base, dirs, files in os.walk(target_dir): 
     for file in files: 
      fn = os.path.join(base, file) 
      zipobj.write(fn, fn[rootlen:]) 

zipfolder('thenameofthezipfile', 'thedirectorytobezipped') #insert your variables here 
sys.exit() 
+0

Ok. Hilf mir zuerst etwas. Was ist in diesem Fall target_dir und was ist der Ordnername? Gib mir bitte ein Beispiel, um sicher zu sein. weil ich deinen code ausprobiert habe, läuft es ohne ausnahme aber auch ohne zip zu erstellen ?! – Z77

+0

Hallo Z77, ich habe den Code bearbeitet, um ihn genauer auf dein Problem zuzuschneiden, überprüfe bitte das neue Skript. Ordnername ist der Ordnername, den Sie der neuen ZIP-Datei geben möchten, und target_dir ist der Zielordner, den Sie komprimieren möchten. Legen Sie das Skript einfach in den enthaltenden Ordner des Ordners, den Sie komprimieren möchten, ändern Sie die Variablen im Funktionsaufruf und es wird funktionieren. –

+0

Tnx für Sie Bemühungen, aber immer noch nichts, keine erstellte Zip-Datei?! :( – Z77