如何在python中递归查找目录

时间:2018-11-27 16:04:22

标签: python function directory

说,我的目录结构如下:

foo1/
├── bar2/
│   └── ...
└── bar4/
    └── ...

我想编写一个函数,它将找到我要查找的目录及其父目录,例如

def directory_find(atom):
    # ....

directory_find(bar4)

因此,这将使我返回foo3/bar4,最初可能不知道父目录,所以这就是我考虑递归搜索的原因。

似乎os模块不能满足我的要求,因为它仅以这种方式用于文件。

1 个答案:

答案 0 :(得分:0)

这就是os.walk()为您所做的;它将遍历嵌套的目录结构,并在每一步告诉您文件名和目录是什么。

您的搜索可以实现为:

def directory_find(atom, root='.'):
    for path, dirs, files in os.walk(root):
        if atom in dirs:
            return os.path.join(path, atom)

演示:

>>> import os
>>> os.makedirs("foo1/bar2", exist_ok=True)
>>> os.makedirs("foo1/bar4", exist_ok=True)
>>> directory_find('bar2')
'./foo1/bar2'
>>> directory_find('bar4')
'./foo1/bar4'