Wenn dirs
und files
nicht definiert sind nach dem for
Schleife endet, das heißt os.walk()
brachte keine Ergebnisse ergeben - was bedeutet, dass sie niemals einen Wert zugewiesen wurde, und so undefiniert bleiben.
Hier ist ein einfaches Beispiel für die gleiche Wirkung in Aktion:
>>> for x in []: # empty
... pass
...
>>> x
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'x' is not defined
>>> for x in [1, 2, 3]:
... pass
...
>>> x
3
Die offensichtliche Erklärung für os.walk(some_path)
keine Ergebnisse ergibt, ist, dass some_path
nicht oder ist nicht vorhanden inaccesible .. Wahrscheinlich haben Sie also keine Some_Dir
, oder Sie haben keine Berechtigung vom Betriebssystem, um darauf zuzugreifen.
Zum Beispiel:
$ mkdir nope
$ chmod a-rwx nope
$ python
Python 2.7.13 (default, Jan 13 2017, 10:15:16)
[GCC 6.3.1 20161221 (Red Hat 6.3.1-1)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> for root, dirs, files in os.walk('nope'):
... break
...
>>> dirs
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'dirs' is not defined
>>> files
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'files' is not defined
>>>
nicht reproduzieren ... –
Nur neugierig, warum würde man die für den Zyklus ohne Bedingungen setzen brechen in? –