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:

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
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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 (former) Modvoice
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

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:

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:

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

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

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