os.walk
generiert Dateinamen in einer Verzeichnisstruktur, die es herunterfährt. Es wird den Inhalt für jedes Verzeichnis zurückgeben. Da es ein generator ist, wird es StopIteration
Ausnahme auslösen, wenn es keine Verzeichnisse mehr zu iterieren gibt. Wenn Sie es in der Schleife for
verwenden, sehen Sie die Ausnahme normalerweise nicht, aber hier rufen Sie next
direkt an.
Wenn Sie passieren nicht vorhandenes Verzeichnis wird unverzüglich die die Ausnahme ausgelöst:
>>> next(os.walk('./doesnt-exist'))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
StopIteration
Sie Ihren Code ändern könnten for
Schleife statt next
zu verwenden, so dass Sie sich nicht um die Sorgen zu machen würden Ausnahme:
import os
for path, dirs, files in os.walk('./doesnt-exist'):
dirs = sorted(dirs)
break
die andere Option ist try
/except
zu verwenden, um die Ausnahme zu fangen:
import os
try:
dirs = sorted(next(os.walk('./doesnt-exist')))
except StopIteration:
pass # Some error handling here
Okay! Aber wie könnte ich das beheben? – RaviTej310
@Sibi Hinzugefügt paar Beispiele zu beantworten – niemmi
Ja, dieser Fehler wurde behoben, aber jetzt bekomme ich einen neuen Fehler zwei Zeilen unten in 'leng = len (dirs);' '' name 'dirs ist nicht definiert "' – RaviTej310