我收到一条消息,说脚本xyz.py返回退出代码0。这是什么意思?
Python中的退出码是什么意思?有多少个?哪些是重要的?
我收到一条消息,说脚本xyz.py返回退出代码0。这是什么意思?
Python中的退出码是什么意思?有多少个?哪些是重要的?
当前回答
为了允许异常处理程序和其他事情执行,我建议使用内置的exit(0)干净地关闭,而不是使用sys.exit()突然终止进程。
其他回答
处理: 为了解决gitlab-ci (https://gitlab.com/gitlab-org/gitlab-runner/-/issues/27668)中的错误,我简单地生成了一个包含错误代码的文件:
Python的部分:
with open("error_code.log", 'w') as file:
file.write('2') # this will trigger a warning
然后在yml文件中:
.step_name:
variables:
# my vars
script:
- python my_code.py arg1 arg2
- exit `cat error_code.log`
allow_failure:
exit_codes:
- 2
如果您希望可移植地使用标准POSIX退出码,请参阅PyPI上的exitstatus包。
安装包:
$ pip install exitstatus
在你的代码中使用:
import sys
from exitstatus import ExitStatus
sys.exit(ExitStatus.success)
为了记录,您可以使用这里定义的POSIX标准退出码。
例子:
import sys, os
try:
config()
except:
sys.exit(os.EX_CONFIG)
try:
do_stuff()
except:
sys.exit(os.EX_SOFTWARE)
sys.exit(os.EX_OK) # code 0, all ok
有一个errno模块定义了标准退出码:
例如,“Permission denied”是错误码13:
import errno, sys
if can_access_resource():
do_something()
else:
sys.exit(errno.EACCES)
操作系统命令有退出码。请查看Linux退出代码以了解有关这方面的一些材料。shell使用退出代码来决定程序是否工作、是否存在问题或是否失败。有一些努力来创建标准的(或者至少是常用的)退出码。请参阅这篇高级Shell脚本文章。