You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何从文件路径列表生成表示目录树的嵌套字典结构

不需要递归,用迭代方式即可高效实现,6000条路径处理无压力。

实现思路
  1. 初始化空字典作为整个目录树的根节点
  2. 遍历每条路径,按/分割为层级片段,过滤掉空字符串(避免路径首尾/、末尾/产生无效空层级)
  3. 用临时指针逐层遍历字典:当前层级不存在对应目录名时,新建空字典作为值,指针进入下一级
  4. 处理到最后一个层级片段时,可根据需求判断是文件还是目录,对应赋值即可
代码实现(Python)
def build_dir_tree(path_list):
    root = {}
    for path in path_list:
        # 分割路径并过滤无效空片段
        parts = [p for p in path.split('/') if p]
        current_level = root
        # 处理前n-1层(均为目录)
        for part in parts[:-1]:
            if part not in current_level:
                current_level[part] = {}
            current_level = current_level[part]
        # 处理最后一层,可根据规则区分文件/目录
        last_part = parts[-1]
        # 示例规则:带后缀的判定为文件,否则判定为目录
        if '.' in last_part:
            current_level[last_part] = "file"
        else:
            if last_part not in current_level:
                current_level[last_part] = {}
    return root

# 测试用例(你的示例路径)
path_list = [
    "study/patient/visitNumber/C1/", 
    "study/patient/visitNumber/C1/subject_14Jan16_V17_C1a.mp4", 
    "study/patient/visitNumber/C1/subject_14Jan16_V17_C1b.mp4", 
    "study/patient/visitNumber/C2/", 
    "study/patient/visitNumber/C2/subject_14Jan16_V17_C2a.mp4", 
    "study/patient/visitNumber/C2/study_subject_V17_C2.mp4", 
    "study/patient/visitNumber/master/C1/subject_14Jan16_V17_C1a.MTS",
]

# 生成目录树
dir_tree = build_dir_tree(path_list)

# 格式化打印结果
import json
print(json.dumps(dir_tree, indent=2, ensure_ascii=False))
输出示例
{
  "study": {
    "patient": {
      "visitNumber": {
        "C1": {
          "subject_14Jan16_V17_C1a.mp4": "file",
          "subject_14Jan16_V17_C1b.mp4": "file"
        },
        "C2": {
          "subject_14Jan16_V17_C2a.mp4": "file",
          "study_subject_V17_C2.mp4": "file"
        },
        "master": {
          "C1": {
            "subject_14Jan16_V17_C1a.MTS": "file"
          }
        }
      }
    }
  }
}

如果不需要区分文件和目录的存储格式,直接删除最后一层的判断逻辑,统一按目录创建空字典即可。

内容的提问来源于stack exchange,提问作者imjellybaby

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 06:39:00