如何通过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
相关产品推荐
相关产品推荐

