你可以使用
parser.add_argument('-D', action='append', default=[])
这会变成论据
-Dfoo -Dbar=baz
进入
>>> args.D
['foo', 'bar=baz']
没有-D 参数意味着args.D 将返回一个空列表。
如果你想把它们当作字典,你可以有一个自定义操作:
def ensure_value(namespace, dest, default):
stored = getattr(namespace, dest, None)
if stored is None:
return value
return stored
class store_dict(argparse.Action):
def __call__(self, parser, namespace, values, option_string=None):
vals = dict(ensure_value(namespace, self.dest, {}))
k, _, v = values.partition('=')
vals[k] = v
setattr(namespace, self.dest, vals)
parser.add_argument('-D', default={}, action=store_dict)
给定-Dfoo -Dbar=baz 将导致
>>> args.D
{'bar': 'baz', 'foo': ''}
这比使用action='append' 更详细
>>> as_dict = dict(i.partition('=')[::2] for i in args.D)