编程语言
首页 > 编程语言> > python – 使用os.walk定位目录

python – 使用os.walk定位目录

作者:互联网

由于一个庞大而复杂的目录结构,我的脚本正在搜索太多目录:

root--
     |
     --Project A--
                  |
                  -- Irrelevant
                  -- Irrelevant
                  -- TARGET
     |
     --Project B--
                  |
                  -- Irrelevant
                  -- TARGET
                  -- Irrelevant
     |
     -- Irrelevant  --
                       |
                       --- Irrelevant

TARGET目录是我唯一需要遍历的目录,它在每个项目中都有一致的名称(我们在这里只称它为Target).

我看了这个问题:

Excluding directories in os.walk

但不是排除,我需要包括“目标”目录,该目录不是“根”级别,而是一级下来.

我尝试了类似的东西:

def walker(path):
    for dirpath, dirnames, filenames in os.walk(path):
        dirnames[:] = set(['TARGET'])

但是这个会影响根目录(从而忽略它需要遍历的所有目录,项目A,项目B …)

解决方法:

您的代码的问题在于您始终在修改dirnames列表,但这意味着即使在根级别也会删除所有子目录,因此递归调用最终不会访问各个Project X目录.

你想要的是只有当TARGET存在时才清除其他目录:

if 'TARGET' in dirnames:
    dirnames[:] = ['TARGET']

这将允许os.walk调用访问Project X目录,但是会阻止它进入不相关的目录.

标签:python,os-walk
来源: https://codeday.me/bug/20190828/1755377.html