【发布时间】:2013-01-21 14:38:45
【问题描述】:
我认为这是不可能的,但我想自己处理来自 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
但我希望它改为属于异常。
【问题讨论】:
-
那么,您没有将 argparse 用于它的设计目的。你想做什么?
-
改变一个原本很棒的库的工作方式并不是一件坏事,只是将其调整到特定的项目。
-
其实你已经可以做到了。只需捕获
SystemExit并将sys.stderr替换为其他对象即可。 -
@jdborg:这不是必然不好,但通常是不好的。在这种情况下,我想听听您想要实现的目标——很可能会有更好的方法。
-
根据你想要做什么,修改参数本身可能会更好。
--foo的参数是可选的吗?你能定义一个自定义动作来处理它吗?这些可能比覆盖argparse的退出决定更干净。