我有一个大文件夹树,我需要创建一个列表,其中包含名为“arc”的每个文件夹的路径。 文件夹树类似于:
./tree
--> ./A
----> ./one
------> ./arc
--> ./B
--> ./C
----> ./two
------> ./arc
--> ./D
--> ./E
----> ./three
--> ./F
----> ./four
------> ./arc
我的最终列表应为[/ tree / A / one / arc,/ tree / C / two / arc,/ tree / F / four / arc] (注意,弧总是在树的第四层)
我一直在尝试使用os.walk功能,但还没有成功。任何帮助将非常感激。
答案 0 :(得分:1)
final_list = [os.path.join(root,dir) for
root,dirs,files in os.walk("path/to/tree") for
dir in dirs if dir=="arc"]
os.walk(path)
返回元组列表,包含:
(the root directory for this recursion,
a listing of all subdirectories in that root,
a listing of all the files in that root)
所以我们正在浏览os.walk
并查看所有dirs
元组,拉出每个元组并检查它是否为"arc"
。如果是,则使用root
将'path/to/tree/A/One'
(类似于'arc'
与dir名称(应该始终为os.path.join
)组合在一起(这将特定于操作系统每个参数之间的路径分隔符),并将其添加到列表comp。