使用subprocess.run保留批处理文件退出代码的可能python错误

时间:2019-07-09 23:06:39

标签: python windows batch-file python-3.6

这就是我要查看的内容,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)吗?

0 个答案:

没有答案