非递归的os.walk()

Pau*_*tas 28 python os.walk non-recursive

我正在寻找一种方法来进行非递归os.walk()步行,就像os.listdir()工作一样.但我需要以同样的方式os.walk()返回.任何的想法?

先感谢您.

Ign*_*ams 33

next(os.walk(...))
Run Code Online (Sandbox Code Playgroud)

  • 下一步做什么? (5认同)
  • 那么如果你想让递归成为可选的,你必须有两种形式的循环:( (3认同)
  • “需要解压的值太多(预计为 3 个)” (2认同)
  • 如果使用 3 行示例会更有帮助,这只是此格式的提示。-1 (2认同)

Ale*_*ecz 18

break在循环文件名后面添加一个:

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

这是有效的,因为(默认情况下)os.walk首先列出所请求文件夹中的文件,然后进入子文件夹.

  • 我认为这应该是公认的答案。因此非常简单和准确。 (3认同)

Kam*_*olo 6

我的更多参数化解决方案是这样的:

for root, dirs, files in os.walk(path):  
    if not recursive:  
        while len(dirs) > 0:  
            dirs.pop()  

    //some fency code here using generated list
Run Code Online (Sandbox Code Playgroud)

编辑:修复,if/while issue.谢谢,@ Dirk van Oosterbosch:}

  • 这仅在******子目录中有效.对于多个子目录,使用`while len(dirs)> 0`而不是`if`. (4认同)