我一直在寻找解决方案来添加一个行为为action =’store_const’的参数,但会采用多个值.
因此,如果我根本不传递它,它应该没有值(或某个值),如果我传递它没有值它应该有默认值,如果我传递它有值(s)它应该是一个列表这些价值观.
例如
parser.parse_args(''.split()) parser.parse_args('-a'.split()) parser.parse_args('-a 1 2 3'.split())
@H_403_12@应该导致
[None] [0] [1,2,3]
@H_403_12@
最佳答案
不是太难:
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())
@H_403_12@如果您想要特殊情况-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())
@H_403_12@