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

如何通过单Python脚本批量生成多个PlantUML图?

批量生成PlantUML/Graphviz图的Python脚本方案

嘿,这事儿好办!我之前也遇到过需要批量更新一堆PlantUML图的情况,手动敲命令确实麻烦。下面给你一个简单的Python脚本,一次性搞定所有文件的生成,不用重复执行命令。

先确认前提

首先你得确保已经装好了plantuml Python包,还有Java环境(PlantUML底层依赖Java):

pip install plantuml

运行java -version能正常输出版本信息就说明Java没问题。

批量处理脚本代码

直接用这个脚本就行,我给你加了注释,一看就懂:

import os
import subprocess

def batch_generate_plantuml(input_dir, output_dir=None):
    # 自动创建输出目录,默认在输入目录下建个output文件夹
    if not output_dir:
        output_dir = os.path.join(input_dir, "generated_diagrams")
    os.makedirs(output_dir, exist_ok=True)
    
    # 遍历输入目录下的所有txt文件(你可以改成.puml/.plantuml这类标准后缀)
    for filename in os.listdir(input_dir):
        if filename.endswith(".txt"):
            full_path = os.path.join(input_dir, filename)
            # 构建plantuml命令,指定输出目录
            command = [
                "python", "-m", "plantuml",
                "-o", output_dir,
                full_path
            ]
            try:
                # 执行命令,check=True会在命令失败时抛出异常
                subprocess.run(command, check=True, capture_output=True, text=True)
                print(f"✅ 成功生成: {filename} -> {os.path.basename(output_dir)}")
            except subprocess.CalledProcessError as e:
                print(f"❌ 处理{filename}失败,错误信息: {e.stderr}")

if __name__ == "__main__":
    # 这里替换成你的PlantUML文件所在的目录,比如你的两个示例文件都放在这里
    target_directory = "./uml_files"
    # 如果你想指定输出目录,就加第二个参数,比如: batch_generate_plantuml(target_directory, "./my_output")
    batch_generate_plantuml(target_directory)

怎么用你的示例文件?

  1. 把example_flow.txt和Graphviz_example.txt放到./uml_files目录(或者修改脚本里的target_directory为你的文件实际路径)
  2. 运行脚本,生成的PNG图会自动放到./uml_files/generated_diagrams文件夹里

可选优化:更灵活的用法

如果想让脚本更通用,可以加个命令行参数功能,这样不用每次改代码:

import argparse

# 上面的batch_generate_plantuml函数不变

if __name__ == "__main__":
    parser = argparse.ArgumentParser(description="批量生成PlantUML/Graphviz图")
    parser.add_argument("input_dir", help="存放PlantUML文件的目录")
    parser.add_argument("-o", "--output_dir", help="输出目录,默认在输入目录下的generated_diagrams文件夹")
    args = parser.parse_args()
    batch_generate_plantuml(args.input_dir, args.output_dir)

现在你可以这样运行:

python batch_uml.py ./uml_files -o ./my_custom_output

额外小技巧

  • 如果想生成SVG格式的图,就在命令里加-tsvg参数,把command改成:
    command = [
        "python", "-m", "plantuml",
        "-tsvg", "-o", output_dir,
        full_path
    ]
    
  • 要是只想处理特定文件名的文件,比如只处理带_example的,把if filename.endswith(".txt")改成if "_example" in filename and filename.endswith(".txt")就行

内容的提问来源于stack exchange,提问作者a.t.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 14:47:53