web-dev-qa-db-ja.com

非再帰的なos.walk()

os.walk()が機能するのと同じように、非再帰的なos.listdir()ウォークを実行する方法を探しています。しかし、os.walk()が返すのと同じ方法で戻る必要があります。何か案が?

前もって感謝します。

29
Paulo Freitas
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は、最初に要求されたフォルダー内のファイルをリストし、次にサブフォルダーに移動します。

16
Alecz

私のもう少しパラメータ化された解決策はこれです:

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

6
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()
1
Sanders