我认为这是不可能的,但我希望能够自己处理argparse产生的异常。
例如:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--foo', help='foo help', required=True)
try:
args = parser.parse_args()
except:
do_something()
当我运行它时:$ myapp.py
usage: myapp --foo foo
myapp: error: argument --foo is required
但我想它应该属于例外情况。
SystemExit
并将sys.stderr
替换为其他对象即可。 - Bakuriu--foo
的参数是可选的吗?您能定义一个自定义操作来处理它吗?这些操作可能比覆盖argparse
退出决策更清晰。 - chepnerArgumentParser()
中添加了一个exit_on_error
参数,但它尚未对缺少必需选项或无法识别的选项抛出错误(?)。请参见https://bugs.python.org/issue41255。 - user650654