这就是我要查看的内容,python脚本使用subprocess.run(或调用或popen,这似乎无关紧要)来运行简单的Windows批处理脚本,批处理文件返回非零退出代码,但python认为返回代码为零。
这是我现在拥有的简单再现:
批处理脚本(error.bat):
@echo off
if "%1" == "a" (
exit /b 1
goto end
)
:end
Python脚本:
import subprocess
retcode = subprocess.run(['error.bat', 'a'])
print(retcode)
从命令行运行批处理文件会导致%errorlevel%设置为1。但是运行python脚本时,返回码将返回为0:
CompletedProcess(args=['error.bat', 'a'], returncode=0)
对于一个简单的脚本,它可以正常工作,但是以某种方式关于if语句和goto的结果会导致python丢失返回代码。我在这里想念什么吗?这是一个Python错误(我正在使用3.6)吗?