Seite 1 von 1
Dateien rekursiv zippen
Verfasst: Sonntag 8. Januar 2006, 17:44
von Taranis
Hallo - Ich wieder -
Anfängerfrage:
Ich versuche mich momentan mit dem zipfile-Modul.
Kann mir mal jemand sagen, wie man komplette Verzeichnisse zippt.
Also rekursiv (inkl. Unterverzeichnisse) abarbeitet ...
Danke im Voraus
Taranis
Verfasst: Sonntag 8. Januar 2006, 21:22
von Joghurt
Wahrscheinlich in Verbindung mit os.walk
Also etwa so:
Code: Alles auswählen
import os, zipfile
Zip = zipfile.ZipFile("test.zip")
for dirname,dirs,filenames in os.walk("verzeichnis_zum_zippen"):
for filename in filenames:
Zip.write(os.path.join(dirname,filename))
Zip.close()
Du musst nur aufpassen, dass test.zip nicht in einem Verzeichnis erstellt wird, welches mit ins zip soll.
Verfasst: Montag 9. Januar 2006, 10:10
von Taranis
Danke Joghurt,
Das hat mir sehr geholfen
Taranis
Verfasst: Montag 9. Januar 2006, 11:39
von .JROppenheimer
aber mit rekursiv hat das nüscht zu tun, oder?
Verfasst: Montag 9. Januar 2006, 12:29
von querdenker
@.JROppenheimer
Braucht es doch auch nicht. os.walk läuft durch den kompletten Verzeichnisbaum.
Siehe
hier
mfg, querdenker
Verfasst: Montag 9. Januar 2006, 23:43
von BlackJack
.JROppenheimer hat geschrieben:aber mit rekursiv hat das nüscht zu tun, oder?
Doch: os.walk() geht rekursiv durch den Verzeichnisbaum. Die Funktion ist in Python geschrieben, kannst Du Dir also anschauen. Sind so ca. 30 Zeilen Quelltext.
Verfasst: Montag 15. Januar 2007, 16:25
von bot
ich habe in einem ordner osteuropäische zeichen
unter windows werden diese auch "normal" angezeigt.
wenn ich jetzt die zip fkt benutze, kommen komische zeichen raus.
jetzt muss ich doch bei
Zip.write(os.path.join(dirname,filename))
noch irgendwie unicode reinbringen, ne? aber wie?
Verfasst: Montag 15. Januar 2007, 16:33
von rafael
Meinst du in einem Dateinamen, einer Datei die in dem Ordner liegt sind Osteuropäische Zeichen oder wie?
Verfasst: Montag 15. Januar 2007, 16:37
von bot
ne ich habe in einem ordner ein file
hat z.b. den namen
týdnù.txt
wenn ich den namen in einem file reinschreibe ( dirname,filename )
dann steht darin auch
týdnù.txt
wenn ich jetzt aber das test.zip entzippe, heisst das file plötzlich
t²dn·.txt
Verfasst: Montag 15. Januar 2007, 16:56
von BlackJack
Dateinamen in ZIPs sind ISO-8859-1 kodiert, oder sollten es zumindest sein. Wenn Du den Dateinamen in einer anderen Kodierung vorliegen hast, dann musst Du umkodieren.
Verfasst: Montag 15. Januar 2007, 16:58
von bot
und wie mache ich das, mal dumm gefragt?
geht das auch generisch, wenn ich jetzt
-1 und -2 habe? oder reicht immer -2 da alle zeichen von -1 auch drin sind?
Verfasst: Montag 15. Januar 2007, 17:12
von Joghurt
Zeichen, die nicht in ISO 8859-1 enthalten sind, dürfen nicht in Dateinamen innerhalb eines ZIPS vorkommen.
Verfasst: Montag 15. Januar 2007, 17:34
von bot
hmm also hab ich einen nachteil beim zipfile module
denn
winace und co. können die dinger ja auch zippen und beim entpacken dies ordnungsgemäss wiedergeben
gibts da ein besseres module unter python wo ich damit keine probleme habe?