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

如何实现Flask API遍历JSON中每个Picture实例运行本地exe

实现方案与代码示例

核心思路

  1. 修正原有代码的键名错误:遍历JSON中的pictures数组(而非你代码里的components)
  2. 从每个picture对象中提取专属参数,结合全局的folderID、subfolderID调用exe
  3. 用更安全的subprocess.run()替代os.system(),避免字符串拼接的命令注入风险

完整Flask API代码

from flask import Flask, request
import subprocess

app = Flask(__name__)

@app.route('/process-images', methods=['POST'])
def process_images():
    # 解析POST请求的JSON数据
    payload = request.get_json()
    
    # 提取全局必要参数
    folder_id = payload.get('folderID')
    subfolder_id = payload.get('subfolderID')
    
    # 参数合法性校验
    if not folder_id or not subfolder_id or 'pictures' not in payload:
        return {"status": "error", "msg": "缺少folderID/subfolderID或pictures数组"}, 400
    
    # 遍历所有picture实例
    for pic_item in payload['pictures']:
        # 提取单张图片的参数
        pic_id = pic_item.get('pic')
        pic_name = pic_item.get('picname')
        type_id = pic_item.get('typeID')
        
        # 跳过参数不全的图片(也可根据需求返回错误)
        if not pic_id or not pic_name or type_id is None:
            continue
        
        # 构造exe命令(用列表形式避免命令注入,自动处理特殊字符)
        cmd = [
            'pic_sizer.exe',
            '-s', subfolder_id,
            '-f', folder_id,
            '-p', pic_id,
            '-pn', pic_name,
            '-t', str(type_id)  # 整数转字符串适配命令格式
        ]
        
        # 执行命令并捕获结果
        result = subprocess.run(cmd, shell=False, capture_output=True, text=True)
        
        # 日志记录(可根据需求存入文件或返回给前端)
        if result.returncode != 0:
            print(f"图片 {pic_name} 处理失败: {result.stderr}")
        else:
            print(f"图片 {pic_name} 处理完成: {result.stdout}")
    
    return {"status": "success", "msg": "所有图片处理任务已执行"}

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000, debug=True)

关键细节说明

  • 遍历优化:直接循环payload['pictures']即可,不需要用range(len(...))的索引方式,代码更简洁
  • 安全升级:subprocess.run()传入命令列表,自动处理参数中的空格、特殊字符,避免os.system()字符串拼接带来的命令注入风险
  • 参数校验:增加多轮参数检查,避免因参数缺失导致程序崩溃
  • 错误排查:捕获exe的执行返回码和输出信息,方便定位处理失败的图片

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 10:55:16