Als Ergebnis zu dem Thread von letzter Woche bin ich gerade dabei, mit dem os.walk rumzuprobieren. Dabei hab ich ein seltsames Phaenomen, das ich mir nicht erklaeren kann. Wenn ich folgenden Code habe:
Code: Alles auswählen
import os
for root, dirs, files in os.walk('/project/010_30/scans/012_30_1/scans/012_30_1/2048x1168'):
for i in dirs:
if i.startswith('proxies_'):
print i
wenn ich aber das gefundene Ergebnis so aus der dirs-Liste entferne, damit der walk-Befehl nicht in das gefundene Verzeichnis reingeht, tritt was komisches auf:proxies_quarter
proxies_half
proxies_full
Code: Alles auswählen
import os
for root, dirs, files in os.walk('/project/010_30/scans/012_30_1/scans/012_30_1/2048x1168'):
for i in dirs:
if i.startswith('proxies_'):
print i
dirs.remove(i)
Eigentlich will ich schon weiterhin alle drei Fundstellen als Ergebnis haben, nur soll eben der os.walk nicht da reinverzweigen, da die Ordner spaeter mal komplett geloescht werden sollen und so der Inhalt nicht mehr interessiert.proxies_quarter
proxies_half
Kann mir jemand erklaeren warum das 'proxies_half' nicht ausgespuckt wird und demnach ja auch nicht weiterverarbeitet werden kann? Hab ich da irgendwo nen groben Denkfehler drin? Wenn ja, wie kann man das besser machen?
Danke und Gruss, Shakebox
PS: @lunar: ja, das ist jetzt nicht mit der Methode gemacht die Du mir vorgeschlagen hast. Ich glaub ich muss das erstmal mit if usw. machen, damit ich halbwegs verstehe was ich da tue. Wenn das klappt will ich mir Deinen Vorschlag nochmal anschauen. Was mir eigentlich (wenn obiges Phaenomen nicht waere) an der os.walk-Methode besser gefaellt ist dass ich mit dem remove() dafuer sorgen kann dass in Unterordner gar nicht reingegangen wird. Bei path.walk wird ja erst die komplette Liste erstellt und dann erst auf match geprueft, oder?