【发布时间】:2016-11-18 21:37:56
【问题描述】:
很简单,我有这个代码
bat_execution = subprocess.Popen("Bats/test.bat", shell=True, stdout=subprocess.PIPE)
返回错误
'Bats' is not recognized as an internal or external command, operable program, or batch file
但是,如果我将 bat 文件移出 Bats 目录并将其与下面的 python 代码保持在同一级别,它运行良好:
bat_execution = subprocess.Popen("test.bat", shell=True, stdout=subprocess.PIPE)
我正在使用 python 和 Windows 7。我不明白为什么路径会导致此错误。
我的 test.bat 很简单:
echo "test success"
【问题讨论】:
-
尝试使用反斜杠而不是正斜杠:
"Bats\\test.bat"或r"Bats\test.bat"而不是"Bats/test.bat"。我认为 Windows 将正斜杠解释为命令行选项的开头。 -
@MadPhysicist,它不是“Windows”而是 cmd.exe,它默认将“/”解析为选项的命令行开关。 OP 也应该能够使用
'"Bats/test.bat"'。另请注意,shell=True不是必需的,因为 Windows 知道为批处理文件运行 cmd.exe。
标签: python windows python-2.7 batch-file