Windows系统Python3.6使用subprocess执行带变量命令报语法错如何解决
错误原因
- 直接语法报错的核心是引号嵌套冲突:你在双引号包裹的字符串内部直接使用了未转义的双引号,同时路径中的
\属于Python字符串转义符,C:\Users中的\U会被识别为Unicode转义前缀,代码无法正常解析。 - subprocess调用逻辑错误:
subprocess.run()传入列表参数时,要求每个独立的命令、参数单独作为列表的一个元素,你把整行命令拼接为单个字符串塞进列表的写法不符合接口要求,就算修复语法错误也无法正常执行。 - 字符串拼接逻辑错误:你把变量拼接和命令字符串混写在同一个引号对里,Python无法识别其中的变量语法。
修复后的代码
import subprocess import os # 用原始字符串定义根路径,避免反斜杠转义问题 data_root = r"C:\Users\Tommy\data" for k in range(len(filenames)): # 用os.path.join拼接路径,自动处理分隔符避免写错 input_path = os.path.join(data_root, filenames[k]) model_path = os.path.join(data_root, filenames[k] + "_model") # 每个参数单独作为列表元素,不需要额外加引号 subprocess.run([ "python3", "train.py", input_path, model_path, "--choice", "A" ])
补充说明
如果Windows环境下执行提示找不到python3命令,把列表第一个元素替换为"python"即可。
内容的提问来源于stack exchange,提问作者Tommy
相关产品推荐
相关产品推荐

