加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

Python argparse:将multiple-value参数与default和const结合使

发布时间:2020-12-16 21:54:27 所属栏目:Python 来源:网络整理
导读:我一直在寻找解决方案来添加一个行为为action =store_const的参数,但会采用多个值. 因此,如果我根本不传递它,它应该没有值(或某个值),如果我传递它没有值它应该有默认值,如果我传递它有值(s)它应该是一个列表这些价值观. 例如 parser.parse_args(''.split())

我一直在寻找解决方案来添加一个行为为action =’store_const’的参数,但会采用多个值.

因此,如果我根本不传递它,它应该没有值(或某个值),如果我传递它没有值它应该有默认值,如果我传递它有值(s)它应该是一个列表这些价值观.

例如

parser.parse_args(''.split())
parser.parse_args('-a'.split())
parser.parse_args('-a 1 2 3'.split())

应该导致

[None]
[0]
[1,2,3]
最佳答案
不是太难:

parser = argparse.ArgumentParser()
parser.add_argument('-a',default=[None],action='store',type=int,nargs='*')
print parser.parse_args(''.split())
print parser.parse_args('-a'.split())
print parser.parse_args('-a 1 2 3'.split())

如果您想要特殊情况-a而没有其他参数,那么在不使用自定义Action的情况下无法执行此操作:

import argparse
class MyAction(argparse.Action):
    def __call__(self,parser,namespace,values,option_string=None):
        if not values:
            setattr(namespace,self.dest,[0])
        else:
            setattr(namespace,values)

parser = argparse.ArgumentParser()
parser.add_argument('-a',action=MyAction,nargs='*')
print parser.parse_args(''.split())
print parser.parse_args('-a'.split())
print parser.parse_args('-a 1 2 3'.split())

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读