我有一个运行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的名字
知道是什么导致了这个问题吗
问题是我的python脚本的大部分都在这个try子句中:
我最初添加了
因为我认为SystemExit在控制台中显示为“异常”是个问题,但事实并非如此。
简言之,解决办法是去掉
except
。原因似乎是捕获
systemExit
,顾名思义,并不会让它被发送到批处理,而批处理认为没有发送错误代码令我惊讶的是
except Exception as ex:
没有捕捉到sys.exit()
生成的systemExit
。在我的例子中,这很好,因为我仍然需要它来记录未知的异常相关问题 更多 >
编程相关推荐