当前位置:  开发笔记 > 编程语言 > 正文

有没有办法在python的argparse中创建参数,如果没有给出值,则返回true

如何解决《有没有办法在python的argparse中创建参数,如果没有给出值,则返回true》经验,为你挑选了1个好方法。



1> poke..:

要选择性地接受值,您需要设置nargs'?'.如果指定了参数,这将使参数消耗一个值.如果指定了参数但没有值,那么将为参数赋值参数的const值,这也是您需要指定的值:

parser = argparse.ArgumentParser()
parser.add_argument('--resize', nargs='?', const=True)

这个论点现在有三种情况:

    未指定:参数将获取其默认值(None默认情况下):

    >>> parser.parse_args(''.split())
    Namespace(resize=None)
    

    指定没有值:参数将获得其const值:

    >>> parser.parse_args('--resize'.split())
    Namespace(resize=True)
    

    用值指定:参数将获得指定的值:

    >>> parser.parse_args('--resize 123'.split())
    Namespace(resize='123')
    

由于您正在查找索引,因此您还可以指定type=int参数值将自动解析为整数.这不会影响默认情况或const情况,因此您仍然可以获得NoneTrue在这种情况下:

>>> parser = argparse.ArgumentParser()
>>> parser.add_argument('--resize', nargs='?', type=int, const=True)
>>> parser.parse_args('--resize 123'.split())
Namespace(resize=123)

您的用法将如下所示:

if args.resize is True:
    for object in my_objects:
        object.do_resize()
elif args.resize:
    my_objects[args.resize].do_resize()

推荐阅读
LEEstarmmmmm
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有