Python中的退出代码标准

Python中的退出代码标准,python,coding-style,Python,Coding Style,Python中是否有任何已建立的退出代码标准或保留的退出代码(特别是Python CLI实用程序)?(例如,/usr/include/sysexit.h用于UNIX平台中的C,或用于Bash脚本)如果您在POSIX平台上,您可以通过以下模块从sysexit.h访问常量: 导入操作系统 >>>os.EX\u os.EX_Cant创建os.EX_NOHOST os.EX_OK os.EX_软件 os.EX_CONFIG os.EX_NOINPUT os.EX_OSERR os.EX_TEMPFAIL

Python中是否有任何已建立的退出代码标准或保留的退出代码(特别是Python CLI实用程序)?(例如,/usr/include/sysexit.h用于UNIX平台中的C,或用于Bash脚本)

如果您在POSIX平台上,您可以通过以下模块从
sysexit.h
访问常量:

导入操作系统 >>>os.EX\u os.EX_Cant创建os.EX_NOHOST os.EX_OK os.EX_软件 os.EX_CONFIG os.EX_NOINPUT os.EX_OSERR os.EX_TEMPFAIL os.EX_数据错误os.EX_NOPERM os.EX_OSFILE os.EX_不可用 os.EX_IOERR os.EX_NOUSER os.EX_协议os.EX_使用 请参阅

可选参数arg可以是给出退出状态的整数(默认为零),也可以是其他类型的对象。如果是整数,则零被视为“成功终止”,任何非零值被Shell等视为“异常终止”。大多数系统要求它在0-127范围内,否则会产生未定义的结果。一些系统有一个为特定出口代码指定特定含义的惯例,但这些系统通常还不发达;Unix程序通常使用2表示命令行语法错误,1表示所有其他类型的错误

该模块提供了几个可以使用的退出代码常量

sys.exit(os.EX_OK)
sys.exit(os.EX_USAGE)
关于便携性

虽然退出代码可能有用,但它们可能会带来可移植性问题。文件警告:

注意:其中一些可能不适用于所有Unix平台,因为存在一些变化。这些常量是在底层平台定义的地方定义的

因此,如果您想要使用退出代码,并且您的代码需要可移植,那么您必须进行更多的错误检查。文档建议在失败时使用字符串错误消息或整数1

import os
import sys

try:
    subcommand = sys.argv[1]
except IndexError:
    try:
        sys.exit(os.EX_USAGE)
    except AttributeError:
        sys.exit("missing argument: subcommand")
要成功退出,请执行以下操作:

import os
import sys

subcommand = sys.argv[1]

if subcommand == 'noop':
    try:
        sys.exit(os.EX_OK)
    except:
        sys.exit()

print(subcommand)

考虑到退出代码带来的额外复杂性,如果您实际上不需要它们,您最好跳过它们。

为了更清楚,您应该在代码中使用操作系统模块,而不是posix,请参见:“不要直接导入此模块。相反,导入模块操作系统,它提供了此接口的可移植版本。”这些在Windows上不可用。
import os
import sys

subcommand = sys.argv[1]

if subcommand == 'noop':
    try:
        sys.exit(os.EX_OK)
    except:
        sys.exit()

print(subcommand)