在Python中退出代码
我收到一条消息,说script xyz.py returned exit code 0
。 这是什么意思?
Python中的退出代码是什么意思? 那里有多less? 哪些重要?
你正在寻找的脚本是调用sys.exit()
。 该方法的参数作为退出代码返回到环境。
脚本从来不会调用exit方法,0是默认的退出代码。
从sys.exit
的文档 :
可选参数arg可以是一个给出退出状态(默认为零)的整数或其他types的对象。 如果它是一个整数,零被认为是“成功终止”,任何非零值被shell等认为是“exception终止”。 大多数系统要求它在0-127范围内,否则会产生未定义的结果。 一些系统有一个为特定退出代码指定特定含义的惯例,但是这些系统通常是欠发达的; Unix程序通常使用2作为命令行语法错误,1使用其他types的错误。
使用退出代码的一个例子是在shell脚本中。 在bash中你可以检查特殊variables$?
对于最后退出状态:
me@mini:~$ python -c ""; echo $? 0 me@mini:~$ python -c "import sys; sys.exit(0)"; echo $? 0 me@mini:~$ python -c "import sys; sys.exit(43)"; echo $? 43
就个人而言,我尝试使用我在/usr/include/asm-generic/errno.h
(在Linux系统上)find的退出码,但是我不知道这是否正确。
有一个errno
模块定义了标准的退出代码:
例如, Permission denied是错误代码13 :
import errno, sys if can_access_resource(): do_something() else: sys.exit(errno.EACCES)
为了logging,您可以使用此处定义的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
0的退出码通常意味着“这里没有错”。 但是,如果脚本的程序员不遵守约定,则可能需要咨询源代码以了解其含义。 通常,非零值作为错误代码返回。
操作系统命令具有退出代码。 查找linux退出代码来查看一些资料。 shell使用退出代码来决定程序是否工作,出现问题或失败。 有一些努力来创build标准(或至less是常用的)退出代码。 请参阅此高级Shell脚本发布。
退出代码只具有由脚本作者分配的含义。 Unix的传统是退出代码0意味着“成功”,其他任何事情都是失败的。 确定给定脚本的退出代码的唯一方法是检查脚本本身。
许多编程语言的退出代码取决于程序员。 所以你必须看看你的程序源代码(或手册)。 零通常意味着“一切顺利”。
如果你想移植使用标准的POSIX退出代码 ,请参阅PyPI上的exitstatus软件包。
安装软件包:
pip install exitstatus
在你的代码中使用:
import sys from exitstatus import ExitStatus sys.exit(ExitStatus.success)
答案是“取决于零代表什么退出码”
然而,在大多数情况下,这意味着“一切都好”
我喜欢POSIX:
所以,在shell中,我会input:
python script.py && echo 'OK' || echo 'Not OK'
如果我的python脚本调用sys.exit(0)
,shell会返回“OK”
如果我的python脚本调用了sys.exit(1)
(或者任何非零整数),那么shell会返回“Not OK”
这是你的工作,要聪明的shell,并阅读您的脚本文件(或来源),看看什么是退出代码的意思。
为了允许exception处理程序和其他的东西执行,我推荐使用exit(0)
内buildsys.exit()
而不是使用sys.exit()
来突然终止进程。