如何将指定根目录的层级结构转换为对应格式的嵌套字典
核心实现思路
- 优先选择Python标准库
pathlib做目录遍历,也可以用os模块的walk方法,前者的面向对象接口更易区分文件、目录,也更易处理路径层级。 - 先定义每个目录节点的统一结构:每个目录对应一个字典,固定包含两个键:
.dirs存储子目录映射(键为子目录名,值为子目录对应的节点字典),.files存储当前目录下的所有文件名列表。 - 采用递归逻辑处理目录层级:
- 初始化根目录对应的节点,预先创建好
.dirs空字典和.files空列表 - 遍历当前目录下的所有条目:
- 若条目为文件,直接把文件名追加到当前节点的
.files列表 - 若条目为目录,先在当前节点的
.dirs中创建该目录名对应的子节点(同样初始化.dirs和.files字段),再递归传入该子目录路径和子节点,处理下一层级的内容
- 若条目为文件,直接把文件名追加到当前节点的
- 初始化根目录对应的节点,预先创建好
- 递归结束后,将根目录名作为键、根节点作为值,包裹成最外层的字典即为目标输出。
可补充学习的知识点
pathlib模块的is_file()、is_dir()、iterdir()方法的使用- 嵌套字典的递归写入技巧,注意每次创建子节点都要初始化统一结构,避免后续取值报错
- 如有特殊过滤需求,可在遍历条目时增加判断逻辑,比如跳过隐藏文件、软链接等不符合要求的条目
内容的提问来源于stack exchange,提问作者SlavaCat
相关产品推荐
相关产品推荐

