我需要使用argparse
请求参数为>;=12。
我找不到使用argparse
来获得此结果的方法,似乎没有办法将规则设置为给定值,而只有全套可接受的值,如choices=['rock','paper','scissors'。
我的代码是:
import sys, argparse
parser = argparse.ArgumentParser()
parser.add_argument("-b", "--bandwidth", type=int, help="target bandwidth >=12")
args = parser.parse_args()
if args.bandwidth and args.bandwidth < 12:
print "ERROR: minimum bandwidth is 12"
sys.exit(1)
我想知道是否有一种方法可以通过一些argparse
选项直接获得这个结果。
你可以尝试在解释中介绍一些东西:
例如,它的Argparse将用
invalid choice
引发错误一种方法是使用自定义类型。
注意:我认为
ArgumentTypeError
比ArgumentError
更适合引发异常。但是,argparse
没有将ArgumentTypeError
作为公共类进行文档化,因此在您自己的代码中使用它可能不正确。我喜欢的一个选项是使用argparse.error
,就像alecxe在他的答案中所做的那样,尽管我会使用自定义操作而不是类型函数来访问解析器对象。更灵活的选项是自定义操作,它提供对当前解析器和命名空间对象的访问。
您可以在不创建自定义类型或单独函数的情况下调用解析器错误。对代码示例的简单更改就足够了:
这将导致应用程序退出并显示分析器错误:
相关问题 更多 >
编程相关推荐