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

如何通过Python向Photoshop JSX脚本传递并获取参数?

解决Python调用Photoshop JSX传递参数失败的问题

问题根源

你的命令参数顺序和传递方式有误:

  • Photoshop命令行中,-f这类脚本参数必须放在执行脚本的-r指令之前,否则会被当作evalFile的参数,而非全局脚本参数。
  • 使用shell=True时,列表形式的参数容易出现引号转义问题,导致参数无法被正确解析。

修正后的Python调用代码

方式1:不使用shell=True(推荐)

避免shell转义问题,参数按顺序拆分传递:

import subprocess

subprocess.run([
    photoshop_path,
    "-f", json_file_path,  # 先传脚本参数
    "-r", f'$.evalFile("{script_path}")'  # 再执行脚本
])

方式2:使用shell=True(需拼接完整命令字符串)

如果必须用shell=True,把所有参数拼成一个字符串,注意引号转义:

import subprocess

cmd = f'"{photoshop_path}" -f "{json_file_path}" -r "$.evalFile(\\"{script_path}\\")"'
subprocess.run(cmd, shell=True)

修正后的JSX代码

先判断参数是否存在,再读取文件内容(如果传递的是JSON文件路径):

// 检查参数是否存在
if (app.scriptArgs.exists("f")) {
    var jsonFilePath = app.scriptArgs.get("f");
    // 读取JSON文件内容
    var file = new File(jsonFilePath);
    if (file.exists) {
        file.open("r");
        var jsonData = file.read();
        file.close();
        // 解析JSON(如果需要)
        var data = JSON.parse(jsonData);
        // 后续逻辑示例
        alert(JSON.stringify(data));
    } else {
        alert("指定的JSON文件不存在");
    }
} else {
    alert("未获取到参数f");
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 14:34:57