Python脚本调用Photoshop执行动作报错:‘Play’命令当前不可用求助
问题
我有一张带白色背景的人物图片,还有一张将用作人物新背景的图片,尝试通过Python脚本调用Photoshop完成换背景操作。以下是我使用的脚本:
import os import win32com.client SILENT_CLOSE = 2 # This actually fires up Photoshop if not already running. ps = win32com.client.Dispatch("Photoshop.Application") ps.DisplayDialogs = 3 # psDisplayNoDialogs ps.Preferences.RulerUnits = 1 # psPixels folder_path = r"C:\Users\MCPL-265\Desktop\ps_connect\TEST\Input" # Get a list of files in the folder files = os.listdir(folder_path) output_folder = r"C:\Users\MCPL-265\Desktop\ps_connect\TEST\Output" # Create the output folder if it doesn't exist if not os.path.exists(output_folder): os.makedirs(output_folder) # Loop through the files and open them in Photoshop for file in files: file_path = os.path.join(folder_path, file) ps.Open(file_path) ps.DoAction("BG", "Actions") output_file = os.path.join(output_folder, file) jpgSaveOptions = win32com.client.Dispatch("Photoshop.JPEGSaveOptions" ) ps.ActiveDocument.SaveAs(output_file, jpgSaveOptions, True, 2) ps.Quit() # Stops the Photoshop application
但运行后触发如下错误:
File "<COMObject Photoshop.Application>", line 2, in DoAction pywintypes.com_error: (-2147352567, 'Exception occurred.', (0, 'Adobe Photoshop', 'General Photoshop error occurred. This functionality may not be available in this version of Photoshop.\n- The command "Play" is not currently available.', None, 0, -2147212704), None)
我尝试了Photoshop 24.5、23.5.5、22.2等多个版本,且动作文件的创建版本与当前使用的自动化版本一致,但仍出现相同错误,请问这是什么原因?
排查方向与解决建议
- 动作名称/动作集名称不匹配:检查
DoAction("BG", "Actions")里的动作名和动作集名是否和Photoshop动作面板里的完全一致,包括大小写、空格。Photoshop对名称大小写敏感,哪怕差一个字符都会导致找不到动作。 - 动作执行的前置条件不满足:手动在Photoshop里运行一次"BG"动作,确认它能正常完成换背景操作。如果手动运行也有问题,说明动作本身存在逻辑错误——比如动作里需要先打开背景图,但脚本只打开了人物图;或者动作依赖特定的图层、选区状态,当前文档不满足。
- 文档加载不完整:脚本打开文件后立刻执行动作,可能文件还没完全加载。在
ps.Open(file_path)后添加延迟,比如导入time模块后加time.sleep(2),等文档加载完毕再执行动作。 - Photoshop权限或进程残留:以管理员身份运行Python脚本,同时结束任务管理器里所有Photoshop进程后重新测试。部分版本的Photoshop在自动化时需要关闭GPU加速,可在Photoshop首选项里关闭GPU加速后再试。
- 动作录制有问题:重新录制"BG"动作,录制过程中确保每一步都在当前文档下执行,不要依赖未打开的文件(比如背景图要在动作里明确打开,或者提前和人物图放在同一文档)。录制完成后手动验证动作正常,再用脚本调用。
- 输出路径权限问题:虽然错误提示在动作执行,但如果输出文件夹没有写入权限,也可能触发异常。确认
output_folder路径有写入权限,必要时更换到其他目录测试。
内容的提问来源于stack exchange,提问作者sowmya kavali
相关产品推荐
相关产品推荐

