当我提供Python的argparse输入时,它并不喜欢,它会引发一个代码为2的SystemExit,seems to mean "No such file or directory"。为什么要使用此错误代码?
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]))
生成此输出:
usage: se.py [-h] arg
se.py: error: too few arguments
Got error code 2 which is ENOENT in errno
答案 0 :(得分:9)
您将C errno
error codes与流程exit status混淆;这两个概念完全不相关。
退出状态值have no official standard,但按惯例2,则表示使用不正确;例如,这是exit code used by Bash built-ins。
os
module公开os.EX_*
常量,表示许多POSIX系统使用的sysexit.h
常量。 os.EX_USAGE
是退出代码64,也可以使用,虽然argparse
实际上并不使用此常量,因为它仅在UNIX系统上可用,而argparse
需要在Windows和其他工作上运行平台也是。