我一直在寻找解决方案来添加一个表现为的参数action='store_const',但会采用多个值.
因此,如果我根本不传递它,它应该没有值(或某个值),如果我传递它没有值它应该有默认值,如果我传递它有值(s)它应该是一个列表这些价值观.
例如
parser.parse_args(''.split())
parser.parse_args('-a'.split())
parser.parse_args('-a 1 2 3'.split())
Run Code Online (Sandbox Code Playgroud)
应该导致
[None]
[0]
[1, 2, 3]
Run Code Online (Sandbox Code Playgroud)
不是太难:
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())
Run Code Online (Sandbox Code Playgroud)
如果你想在-a没有额外参数的情况下特殊情况下,没有使用自定义操作就无法做到这一点:
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,self.dest,values)
parser = argparse.ArgumentParser()
parser.add_argument('-a',default=[None],action=MyAction,type=int,nargs='*')
print parser.parse_args(''.split())
print parser.parse_args('-a'.split())
print parser.parse_args('-a 1 2 3'.split())
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4751 次 |
| 最近记录: |