我收到一条消息,说脚本xyz.py返回退出代码0。这是什么意思?
Python中的退出码是什么意思?有多少个?哪些是重要的?
我收到一条消息,说脚本xyz.py返回退出代码0。这是什么意思?
Python中的退出码是什么意思?有多少个?哪些是重要的?
当前回答
退出代码0通常表示“这里没有问题”。但是,如果脚本的程序员没有遵循约定,您可能需要参考源代码来了解它的含义。通常非零值作为错误代码返回。
其他回答
退出码只有脚本作者指定的意义。Unix的传统是,退出码0表示“成功”,否则就是失败。要确定给定脚本的退出码意味着什么,唯一的方法是检查脚本本身。
答案是“取决于退出码0的含义”。
然而,在大多数情况下,这意味着“一切都很好”。
我喜欢POSIX:
因此,在shell中,我键入:
python script.py && echo 'OK' || echo 'Not OK'
如果我的Python脚本调用sys.exit(0), shell返回'OK'
如果我的Python脚本调用sys.exit(1)(或任何非零整数),shell返回'Not OK'。
巧妙地使用shell是您的工作,并阅读脚本的文档(或源代码)以了解退出代码的含义。
处理: 为了解决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)