os.walk
будет генерировать имена файлов в дереве каталогов, идя вниз. Он вернет содержимое для каждого каталога. Так как это generator, он будет вызывать исключение StopIteration
, когда каталогов больше нет. Обычно, когда вы используете его в цикле for
, вы не видите исключение, но здесь вы напрямую вызываете next
.
Если вы передаете несуществующий каталог к нему будет немедленно поднять исключение:
>>> next(os.walk('./doesnt-exist'))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
StopIteration
Вы можете изменить код, чтобы использовать for
петлю вместо next
так, что вам не придется беспокоиться о том, исключение:
import os
for path, dirs, files in os.walk('./doesnt-exist'):
dirs = sorted(dirs)
break
другой вариант заключается в использовании try
/except
поймать исключение:
import os
try:
dirs = sorted(next(os.walk('./doesnt-exist')))
except StopIteration:
pass # Some error handling here
Хорошо! Но как я могу это исправить? – RaviTej310
@Sibi Добавлено пару примеров для ответа – niemmi
Да, эта ошибка была решена, но теперь я получаю новую ошибку в двух строках ниже в 'leng = len (dirs):' say '" name 'dirs' не определен " – RaviTej310