在Python脚本中执行另一个Python脚本:TDW脚本未运行问题求助
解决TDW脚本调用失败的问题
先看你代码里的核心问题:
- 命令字符串未正确替换变量:你写的
cmd = "recreate.py -json={new_path}"里的{new_path}只是字面字符串,不会被实际变量值替换,导致命令找不到指定的JSON文件。 - subprocess调用方式有误:注释里的写法把
-json=和路径拼在一起,容易触发路径含特殊字符的问题,应该拆分成独立参数。 - 可能缺少Python解释器调用:如果系统未将
.py文件关联到Python,直接写recreate.py可能无法执行,得明确用python recreate.py或python3 recreate.py。
修正后的代码示例:
import os import subprocess frameSize = (512, 512) path = 'CRIPP/annotations/icqa_dataset/IID/json' for i in range(0, 1): new_path = os.path.join(path, f'example_{i}.json') # 用os.path.join避免路径拼接出错 # 用subprocess调用,可捕获错误输出方便排查 try: result = subprocess.run( ['python', 'recreate.py', '-json', new_path], check=True, capture_output=True, text=True ) print("脚本运行成功:", result.stdout) except subprocess.CalledProcessError as e: print("脚本运行失败,错误信息:", e.stderr) # 若要用os.system,修复后的写法(不推荐,难捕获错误) # cmd = f"python recreate.py -json={new_path}" # exit_code = os.system(cmd) # if exit_code != 0: # print(f"命令执行失败,退出码:{exit_code}")
额外排查方向:
- 确认
recreate.py路径:如果它不在当前工作目录,要写绝对路径(比如/home/user/scripts/recreate.py)或相对路径(比如./scripts/recreate.py)。 - 检查JSON文件路径:打印
new_path确认文件确实存在,避免拼写错误。 - 权限问题:确保
recreate.py有可读权限,用Python解释器调用无需额外可执行权限。 - 验证TDW环境:手动运行
python recreate.py -json=你的JSON路径,确认TDW本身能正常生成图像,排除环境配置问题。
内容的提问来源于stack exchange,提问作者Sagnnik Biswas
相关产品推荐
相关产品推荐

