关于shell:从Python获取退出状态代码

Get exit status code from Python

我有一个python脚本,它将执行一些操作,根据结果,将使用代码0(好的)或1(不好的)退出。

我想捕获这个结果,将它存储到一个变量中,然后通过UDP发送它。这不能在python脚本中完成(要求)。

所以,假设我的脚本是这样的:

1
2
3
import sys
# Do some stuff
sys.exit(0) # or sys.exit(1)

我和python script.py一起运行。

如何获取此退出状态代码(0或1)。

我试着回音$errorlevel,但它只打印一个空行。也尝试使用exit(0),而不是sys.exit()(见此处)和其他一些失败的尝试。


因为根据你的回答,你使用的是zsh

测试.py

1
2
import sys
sys.exit(12)

在控制台中

1
2
3
4
python test.py
RC=$?
echo"Exit code $RC"
program_to_send $RC


这是一个脚本问题而不是python问题,但是在bash shell中,您使用的是$?既然任何命令改变了$?保存一份副本通常是个好主意。

1
2
3
4
5
6
python script.py  
RC=$?

echo $RC
[ $RC == 0 ] && echo Success || echo Failed
# replace above lines by whatever you need to send $RC via UDP ...

如果这是一个windows cmd脚本问题,您可能应该用适当的标签重新发布。(我再也不干温多兹了,谢谢你$DEITY)


这应该通过捕获异常并使用记录器以正确的方式完成。

1
2
3
4
5
6
7
8
9
10
import logging, time

logging.basicConfig(level=logging.DEBUG, filename='/path/to/file/errorlog.log')

try:
    #MySQL Connection
except MySQLdb.Error as e:
    errortime = time.strftime('%Y-%m-%dT%H:%M:%S')
    logging.exception(errortime)
    raise os._exit(0)