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

如何利用多份JSON数据生成对应名称的UML文件?

批量处理JSON生成对应名称的UML文件

要实现批量生成与JSON同名的UML文件,核心是动态处理文件名,结合你已有的代码,只需添加文件名转换逻辑并将单文件生成逻辑整合到循环中即可,完整代码如下:

import json
import glob
import os

# 获取所有目标JSON文件
json_files = glob.glob('JSON/*.json', recursive=True)

for single_file in json_files:
    # 1. 从JSON路径生成对应UML文件名
    # 提取不带路径和后缀的纯文件名
    file_base_name = os.path.splitext(os.path.basename(single_file))[0]
    # 拼接UML文件的完整路径(可根据你的目录结构调整)
    uml_file_path = f'test/UML/{file_base_name}.uml'
    
    # 2. 加载当前JSON文件的数据
    with open(single_file, 'r') as f:
        json_data = json.load(f)
    
    # 3. 生成对应UML文件内容
    with open(uml_file_path, 'w') as f:
        f.write("@startuml\nprintscale weekly\nProject starts 2022-08-01\n")
        for stuff in json_data["releases"]:
            new_line = f"[Release {stuff['release']}] starts {stuff['start_date']} and ends {stuff['end_date']}\n"
            f.write(new_line)
            print(new_line)
        f.write("@enduml")
    
    # 4. 调用PlantUML生成对应PNG文件
    os.system(f"java -jar test/plantuml.jar {uml_file_path} -o ../PNG/")

关键逻辑说明

  • 文件名动态转换:
    • os.path.basename(single_file):从完整路径中提取单纯的文件名(比如JSON/file1.json转为file1.json)
    • os.path.splitext(...):拆分文件名与后缀,取索引0得到不带后缀的名称(file1.json转为file1)
    • 通过f-string拼接出与原JSON同名的UML文件路径
  • 循环整合:将单文件的加载、UML生成、PNG转换逻辑全部放入循环,每次迭代处理一个JSON文件
  • 动态命令执行:把os.system中的固定文件名替换为动态生成的uml_file_path,确保每个UML文件都能生成对应PNG

额外提示

  • 确保test/UML/和../PNG/目录已存在,可提前用os.makedirs("test/UML/", exist_ok=True)这类代码自动创建目录
  • 如果JSON文件结构存在差异,建议添加异常捕获逻辑,避免单个文件出错导致整个批量任务中断

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 12:40:30