[英]python argparse extra args
我想使用argparse
獲得額外的args,但不知道它們是什么。 例如,在maven
我們可以添加以下形式的參數: -Dmaven.test.skip=true
或-Dcmd=compiler:compile
我想使用argparse
在python中獲得相同的結果,並使用所有args獲得某種dict
。
我知道我可以使用:
aparser.parse_known_args()
但是然后我需要解析我額外的參數(刪除-D
並用=
分隔)。 想知道是否有開箱即用的東西嗎?
謝謝!
您可以使用
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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.