Eine Serie von Dateien manipulieren

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.
Antworten
bogomip
User
Beiträge: 6
Registriert: Dienstag 28. August 2007, 21:36
Wohnort: Hettenshausen
Kontaktdaten:

Montag 17. Dezember 2007, 19:29

Hallo Python-Freaks,

ich möchte folgendes erreichen:

Mein Programm soll alle Dateien (Bilder) des Verzeichnisses X sowie die Dateien aller Unterverzeichnisse bearbeiten. Dazu 2 Fragen:

1) Wie geht man am besten vor? Ich dachte, erstmal alle Dateien per rekursiver Funktion in eine Liste einlesen und dann nacheinander abarbeiten... Kann eine Liste auch ein paar hundert Einträge haben (Performance?)? Oder sollte man lieber Ordner für Ordner vorgehen?

2) Wie sieht der Pseudocode für die rekursive Funktion aus?

Ich hab hier im Forum schon was gefunden aber das war wenig hilfreich. Die walk-Funktion ist mir ebenso bekannt, ich möchte es aber lieber selbst bewerkstelligen.

Danke für Tipps,

bogomip :)
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Montag 17. Dezember 2007, 19:48

bogomip hat geschrieben:Ich hab hier im Forum schon was gefunden aber das war wenig hilfreich. Die walk-Funktion ist mir ebenso bekannt, ich möchte es aber lieber selbst bewerkstelligen.
Schlichte Frage: Wozu? Wie du sagtest, `walk` existiert, löst dein Problem und ist gut getestet. Warum also eine Lösung selbst machen, die wohl kaum besser ist aber mit mehr Arbeitsaufwand verbunden ist?
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Montag 17. Dezember 2007, 20:17

bogomip hat geschrieben:Die walk-Funktion
Hallo bogomip!

Nimm ``os.walk``!

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
bogomip
User
Beiträge: 6
Registriert: Dienstag 28. August 2007, 21:36
Wohnort: Hettenshausen
Kontaktdaten:

Montag 17. Dezember 2007, 20:33

Leonidas hat geschrieben:
bogomip hat geschrieben:Ich hab hier im Forum schon was gefunden aber das war wenig hilfreich. Die walk-Funktion ist mir ebenso bekannt, ich möchte es aber lieber selbst bewerkstelligen.
Schlichte Frage: Wozu? Wie du sagtest, `walk` existiert, löst dein Problem und ist gut getestet. Warum also eine Lösung selbst machen, die wohl kaum besser ist aber mit mehr Arbeitsaufwand verbunden ist?
Der Lerneffekt :)
Benutzeravatar
BlackVivi
User
Beiträge: 762
Registriert: Samstag 9. Dezember 2006, 14:29
Kontaktdaten:

Montag 17. Dezember 2007, 20:37

Hmpf, dafür brauchst du auf jedenfall os.listdir, isdir, isfile und njoa...
EyDu
User
Beiträge: 4871
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Montag 17. Dezember 2007, 20:40

bogomip hat geschrieben:Der Lerneffekt :)
"walk" nachbauen hat aber keinen echten Lerneffekt. Dann verbessere lieber das eigentliches Programm um weitere Funktionalität. Da lernst du mehr und es macht auch noch Spaß.
Zack
User
Beiträge: 47
Registriert: Dienstag 24. April 2007, 11:19

Dienstag 18. Dezember 2007, 12:25

Ich versuch mich jetzt einfach mal...

Pseudocode für die rekurive Funktion!?!:

Code: Alles auswählen

import glob, os

def do_something(directory="./"):
    for filename in glob.glob(directory + '/*'):
        absPath = os.path.abspath(filename)
        if os.path.isdir(absPath):
            do_something(absPath)
        else:
            print absPath, os.path.getsize(absPath)
            pass

do_something("C://RECYCLER")
mfg
Zack
Antworten