非递归的os.walk()

时间:2010-11-07 11:57:37

标签: python os.walk non-recursive

我正在寻找一种方法来进行非递归os.walk()步行,就像os.listdir()一样。但我需要以os.walk()返回的相同方式返回。有什么想法吗?

提前谢谢。

5 个答案:

答案 0 :(得分:32)

next(os.walk(...))

答案 1 :(得分:13)

在循环文件名后添加break

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

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

答案 2 :(得分: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

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

答案 3 :(得分:1)

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()

答案 4 :(得分:0)

清空目录列表

for r, dirs, f in os.walk('/tmp/d'):
    del dirs[:]
    print(f)