kuz*_*roo 1 python errno argparse
当我给Python的argparse输入它不喜欢时,它会引发一个代码为2的SystemExit,这似乎意味着"没有这样的文件或目录".为什么要使用此错误代码?
import argparse
import errno
parser = argparse.ArgumentParser()
parser.add_argument('arg')
try:
parser.parse_args([])
except SystemExit as se:
print("Got error code {} which is {} in errno"
.format(se.code, errno.errorcode[se.code]))
Run Code Online (Sandbox Code Playgroud)
产生这个输出:
usage: se.py [-h] arg
se.py: error: too few arguments
Got error code 2 which is ENOENT in errno
Run Code Online (Sandbox Code Playgroud)
您将C errno 错误代码与进程退出状态混淆; 这两个概念完全不相关.
退出状态值没有官方标准,但按照惯例2表示不正确的用法 ; 例如,这是Bash内置函数使用的退出代码.
该os模块公开os.EX_*了表示sysexit.h许多POSIX系统使用的常量的常量.os.EX_USAGE是退出代码64,也可以使用,虽然argparse实际上并没有使用这个常量,因为它只在UNIX系统上可用,同时也argparse需要在Windows和其他平台上工作.