每当用户没有为我的脚本中的参数提供合适的参数时,我会使用我提供的错误字符串引发argparse.ArgumentTypeError。我的问题是argparse还会打印用法,而告诉用户当他的参数出错时如何使用我的脚本似乎无关紧要。
是否有某种方法可以引发argparse.ArgumentTypeError以抑制使用情况打印输出?我需要使用自定义使用功能吗?或者我可能根本不应该使用这个例外?
答案 0 :(得分:0)
你在哪里抚养ArgumentTypeError
?在type
函数中?
ArgumentTypeError
的定义仅为pass
;除了子类Exception
之外,它没有做任何事情。
在_get_value
中引用它,它在您的参数字符串上调用type
函数。该方法以同样的方式处理TypeError
和ValueError
。它将错误重新修改为ArgumentError
,它将参数dest
(名称)添加到消息中。 parse_known_args
最终将其转换为对parser.error
的调用。
添加parser.error
的{{1}}方法。
因此,简单地更改该方法可能是您问题的解决方案。
https://docs.python.org/3/library/argparse.html#exiting-methods
我不确定如果您的print_usage
函数返回其他错误会发生什么 - 它可能会一直冒泡到顶部。
更改type
方法的正式方法是继承parser.error
,但您可以通过以下方式进行一次更改:
ArgumentParser
这只是显示了消息,并没有退出。如果我更接近原版,它也会退出。