您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Python argparse整数条件(> = 12)

Python argparse整数条件(> = 12)

一种方法是使用自定义类型。

def bandwidth_type(x):
    x = int(x)
    if x < 12:
        raise argparse.ArgumentTypeError("Minimum bandwidth is 12")
    return x

parser.add_argument("-b", "--bandwidth", type=bandwidth_type, help="target bandwidth >= 12")

注意:与相比,我认为ArgumentTypeError一个更正确的例外ArgumentError。但是,ArgumentTypeError并未将其记录为公共类argparse,因此在您自己的代码中使用它可能并不正确。我喜欢的一个选项是argparse.error像alecxe一样在他的答案中使用,尽管我将使用自定义操作而不是类型函数来访问解析器对象。

更为灵活的选项是自定义操作,它提供对当前解析器和名称空间对象的访问。

class BandwidthAction(argparse.Action):

    def __call__(self, parser, namespace, values, option_string=None):
        if values < 12:
            parser.error("Minimum bandwidth for {0} is 12".format(option_string))
            #raise argparse.ArgumentError("Minimum bandwidth is 12")

        setattr(namespace, self.dest, values)

parser.add_argument("-b", "--bandwidth", action=BandwidthAction, type=int,
                     help="target bandwidth >= 12")
python 2022/1/1 18:51:22 有408人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶