Hallo,
die genaue Syntax von os.path.walk ist:
walk(path, visit, arg)
Die Funktion tut nichts anderes, als für jeden Unterordner im Pfad path die Funktion visit aufzurufen, und zwar mit den Argumenten: arg, dirname, names. arg musst du selber an walk übergeben (s.o.), d.h., wenn du es nicht brauchst, einfach einen leeren String. dirname ist der Name des aktuellen Ordners und names ist eine Liste der Dateien und Ordner im aktuellen Verzeichnis.
Zu deiner Frage:
die Funktione dirbeschr ist - jedenfalls so, wie sie da steht - nicht "walk-gerecht". Zum einen stecken noch ein paar Fehler darin und zum anderen muss die drei Argumente entgegennehmen (s.o.).
Ich habe die Funktion mal "walk.gerecht" gemacht:
Code: Alles auswählen
def dirbeschr(arg, dir, liste): #1
for file in liste: #2
if os.path.isfile(os.path.join(dir, file)): #3
print "Datei: %s\t Groesse: %i" %(os.path.join(dir, file), os.stat(os.path.join(dir, file))[stat.ST_SIZE]) #4
>>> os.path.walk("C:\\irgend\\was", dirbeschr, "")
1. Die Funktionsparameter wie oben angepasst
2. Das liste = os.listdie(dir) kannst du dir jetzt sparen, weil die liste schon übergeben wird
3. a) Die Funktion isfile ist im Modul os.path, nich im Modul os! b) Um den vollständigen Pfad der Datei oder des Ordners zu ermitteln (und genau den verlangt os.path.isfile auch) musst du mittels os.path.join das aktuelle Verzeichnis und die aktuelle Datei zusammenfügen.
4. s. 3b
Ich hoffe, ich konnte dir helfen!
cu
Chris