sun*_*eep 185 python exit-code
我收到一条消息说script xyz.py returned exit code 0
.这是什么意思?
Python中的退出代码是什么意思?那里有多少?哪些重要?
Dav*_*sta 205
你在脚本中寻找的是调用sys.exit()
.该方法的参数作为退出代码返回到环境中.
脚本很可能永远不会调用exit方法,而0是默认的退出代码.
Eig*_*gir 94
可选参数arg可以是一个整数,给出退出状态(默认为零)或其他类型的对象.如果它是整数,则零被认为是"成功终止",并且任何非零值被贝壳等视为"异常终止".大多数系统要求它在0-127范围内,否则会产生不确定的结果.有些系统有一个约定,用于为特定的退出代码分配特定的含义,但这些通常是不发达的; Unix程序通常使用2表示命令行语法错误,1表示所有其他类型的错误.
使用退出代码的一个示例是shell脚本.在bash中,您可以检查特殊变量$?
的最后退出状态:
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
Run Code Online (Sandbox Code Playgroud)
我个人尝试使用我在/usr/include/asm-generic/errno.h
(在Linux系统上)找到的退出代码,但我不知道这是否正确.
Oli*_*Oli 27
有一个errno
模块定义标准退出代码:
例如,权限被拒绝是错误代码13:
import errno, sys
if can_access_resource():
do_something()
else:
sys.exit(errno.EACCES)
Run Code Online (Sandbox Code Playgroud)
laf*_*ste 24
对于记录,您可以使用此处定义的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
Run Code Online (Sandbox Code Playgroud)
如果您想要可移植地使用标准POSIX退出代码,请参阅PyPI上的exitstatus包.
安装包:
pip install exitstatus
Run Code Online (Sandbox Code Playgroud)
在您的代码中使用:
import sys
from exitstatus import ExitStatus
sys.exit(ExitStatus.success)
Run Code Online (Sandbox Code Playgroud)
答案是“取决于退出代码零是什么意思”
但是,在大多数情况下,这意味着“一切都很好”
我喜欢POSIX:
因此,在外壳上,我将输入:
python script.py && echo 'OK' || echo 'Not OK'
如果我的python脚本调用,sys.exit(0)
则外壳返回“ OK”
如果我的python脚本调用sys.exit(1)
(或任何非零整数),则外壳程序返回“不正确”
了解外壳程序是您的工作,并阅读脚本的文档(或源代码)以了解退出代码的含义。
小智 5
我建议使用 exit(0) 内置命令彻底关闭,而不是使用 sys.exit()
我不确定这是否是个好建议。
提到的文档内容如下:
站点模块(在启动期间自动导入,除非给出了 -S 命令行选项)向内置命名空间添加了几个常量。它们对于交互式解释器 shell 很有用,不应在程序中使用。
然后:
退出(代码=无)
对象在打印时会打印“使用退出()或 Ctrl-D(即 EOF)退出”之类的消息,并在调用时使用指定的退出代码引发 SystemExit。
如果我们将它与sys.exit()文档进行比较,它使用的是引发SystemExit
异常的相同机制。
归档时间: |
|
查看次数: |
400063 次 |
最近记录: |