批处理文件没有从它启动的python脚本接收ERRORLEVEL

2024-05-19 09:14:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个运行python脚本的批处理文件。
不管怎样,这个python脚本总是以sys.exit(code)结束,代码是一个错误代码。
批处理文件没有获取我的错误代码,而是始终读取0,并显示以下内容:

..\..\STS\Python\python.exe Version_code_ID.py %*  
echo Error level = %ERRORLEVEL%

python的这一安装版本在3.7.1中。
我确信我的python代码与0以外的其他代码一起退出,这要感谢我的记录器(以及出于测试目的而自愿导致错误的我)。
例如,我让它以1和12退出,两次尝试都导致批处理中得到0

为了以防万一,这里还有我用来退出的python函数:

def exit(code):
    if(code > 0 ):
        log.error("The computing module will shutdown with the following error code : "+str(code))
    elif(code == 0):
        log.info("Execution sucessfull")
    log.info("STOP of VERSION_CODE_ID Computing Module")
    log.removeHandler(stream_handler)
    log.removeHandler(file_handler)
    stream_handler.close()
    file_handler.close()
    sys.exit(code)

log只是我的logging.logger的名字

知道是什么导致了这个问题吗


Tags: 文件代码info脚本logidstreamsys
1条回答
网友
1楼 · 发布于 2024-05-19 09:14:46

问题是我的python脚本的大部分都在这个try子句中:

try:
    #All of my code
except SystemExit:
    ()
except Exception as ex:
    fun.log.error('ERROR: Unknown exception: ' + repr(ex))  

我最初添加了

except SystemExit:
    () 

因为我认为SystemExit在控制台中显示为“异常”是个问题,但事实并非如此。
简言之,解决办法是去掉except
原因似乎是捕获systemExit,顾名思义,并不会让它被发送到批处理,而批处理认为没有发送错误代码

令我惊讶的是except Exception as ex:没有捕捉到sys.exit()生成的systemExit。在我的例子中,这很好,因为我仍然需要它来记录未知的异常

相关问题 更多 >

    热门问题