说,我的目录结构如下:
foo1/
├── bar2/
│ └── ...
└── bar4/
└── ...
我想编写一个函数,它将找到我要查找的目录及其父目录,例如
def directory_find(atom):
# ....
directory_find(bar4)
因此,这将使我返回foo3/bar4
,最初可能不知道父目录,所以这就是我考虑递归搜索的原因。
似乎os
模块不能满足我的要求,因为它仅以这种方式用于文件。
答案 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'