在Python中将目录遍历到特定深度

时间:2017-09-11 01:38:24

标签: python list directory os.walk

我想在c://下搜索和打印目录,但只列出第一级和第二级,包含SP30070156-1。

使用python 2获取此功能的最有效方法是什么,而脚本没有运行整个子目录(在我的情况下需要很长时间这么多)

典型的目录名称如下:

Visibility

2 个答案:

答案 0 :(得分:1)

您可以尝试基于os.walk()创建一个函数。这样的事情应该让你开始:

import os

def walker(base_dir, level=1, string=None):
    results = []
    for root, dirs, files in os.walk(base_dir):
        _root = root.replace(base_dir + '\\', '') #you may need to remove the "+ '\\'"
    if _root.count('\\') < level:
        if string is None:
            results.append(dirs)
        else:
            if string in dirs:
               results.append(dirs)
    return results

然后你可以用string ='SP30070156-1'和1级然后2级调用它。

不确定它是否会超过40秒。

答案 1 :(得分:0)

这里是我使用的代码,该方法快速列出,如果过滤了关键字,那么它甚至更快

import os


MAX_DEPTH = 1
#folders = ['U:\I-Project Works\PPM 20003171\PPM 11-12 NSW', 'U:\I-Project Works\PPM 20003171\PPM 11-12 QLD']
folders = ['U:\I-Project Works\PPM 20003171\PPM 11-12 NSW']
try:
    for stuff in folders:
        for root, dirs, files in os.walk(stuff, topdown=True):
            for dir in dirs:
                if "SP30070156-1" in dir:
                    sp_path = root + "\\"+ dir
                    print(sp_path)

                    raise Found
            if root.count(os.sep) - stuff.count(os.sep) == MAX_DEPTH - 1:
                del dirs[:]

except:
    print "found"