Ответ 1
next(os.walk(...))
Я ищу способ сделать нерекурсивную прогулку os.walk()
, как работает os.listdir()
. Но мне нужно вернуться так же, как возвращает os.walk()
. Любая идея?
Спасибо заранее.
next(os.walk(...))
Добавьте break
после имени файла для цикла:
for root, dirs, filenames in os.walk(workdir):
for fileName in filenames:
print (fileName)
break #prevent descending into subfolders
Это работает, потому что (по умолчанию) os.walk
сначала перечисляет файлы в запрошенной папке, а затем переходит в подпапки.
Мое немного более параметризованное решение было бы следующим:
for root, dirs, files in os.walk(path):
if not recursive:
while len(dirs) > 0:
dirs.pop()
//some fency code here using generated list
Изменить: исправления, если проблема/время. Спасибо, @Dirk van Oosterbosch:}
Хорошо, что означало Kamiccolo, было больше в соответствии с этим:
for str_dirname, lst_subdirs, lst_files in os.walk(str_path):
if not bol_recursive:
while len(lst_subdirs) > 0:
lst_subdirs.pop()