Подтвердить что ты не робот

Нерекурсивный os.walk()

Я ищу способ сделать нерекурсивную прогулку os.walk(), как работает os.listdir(). Но мне нужно вернуться так же, как возвращает os.walk(). Любая идея?

Спасибо заранее.

4b9b3361

Ответ 1

next(os.walk(...))

Ответ 2

Добавьте break после имени файла для цикла:

for root, dirs, filenames in os.walk(workdir):
    for fileName in filenames:
        print (fileName)
    break   #prevent descending into subfolders

Это работает, потому что (по умолчанию) os.walk сначала перечисляет файлы в запрошенной папке, а затем переходит в подпапки.

Ответ 3

Мое немного более параметризованное решение было бы следующим:

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:}

Ответ 4

Хорошо, что означало 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()