Dateien rekursiv zippen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Taranis
User
Beiträge: 27
Registriert: Freitag 6. Januar 2006, 18:05

Dateien rekursiv zippen

Beitragvon Taranis » Sonntag 8. Januar 2006, 17:44

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
Benutzeravatar
Joghurt
User
Beiträge: 877
Registriert: Dienstag 15. Februar 2005, 15:07

Beitragvon Joghurt » Sonntag 8. Januar 2006, 21:22

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.
Taranis
User
Beiträge: 27
Registriert: Freitag 6. Januar 2006, 18:05

Beitragvon Taranis » Montag 9. Januar 2006, 10:10

Danke Joghurt,
Das hat mir sehr geholfen

Taranis
.JROppenheimer

Beitragvon .JROppenheimer » Montag 9. Januar 2006, 11:39

aber mit rekursiv hat das nüscht zu tun, oder?
querdenker
User
Beiträge: 424
Registriert: Montag 28. Juli 2003, 16:19
Wohnort: /dev/reality

Beitragvon querdenker » Montag 9. Januar 2006, 12:29

@.JROppenheimer

Braucht es doch auch nicht. os.walk läuft durch den kompletten Verzeichnisbaum.


Siehe hier
mfg, querdenker
BlackJack

Beitragvon BlackJack » Montag 9. Januar 2006, 23:43

.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.
bot
User
Beiträge: 20
Registriert: Montag 22. Mai 2006, 19:47

Beitragvon bot » Montag 15. Januar 2007, 16:25

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?
rafael
User
Beiträge: 189
Registriert: Mittwoch 26. Juli 2006, 16:13

Beitragvon rafael » Montag 15. Januar 2007, 16:33

Meinst du in einem Dateinamen, einer Datei die in dem Ordner liegt sind Osteuropäische Zeichen oder wie?
bot
User
Beiträge: 20
Registriert: Montag 22. Mai 2006, 19:47

Beitragvon bot » Montag 15. Januar 2007, 16:37

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
BlackJack

Beitragvon BlackJack » Montag 15. Januar 2007, 16:56

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.
bot
User
Beiträge: 20
Registriert: Montag 22. Mai 2006, 19:47

Beitragvon bot » Montag 15. Januar 2007, 16:58

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?
Benutzeravatar
Joghurt
User
Beiträge: 877
Registriert: Dienstag 15. Februar 2005, 15:07

Beitragvon Joghurt » Montag 15. Januar 2007, 17:12

Zeichen, die nicht in ISO 8859-1 enthalten sind, dürfen nicht in Dateinamen innerhalb eines ZIPS vorkommen.
bot
User
Beiträge: 20
Registriert: Montag 22. Mai 2006, 19:47

Beitragvon bot » Montag 15. Januar 2007, 17:34

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?

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder