我要尝试的第一件事是使用
parse_known_args其他参数,并
extras使用on例程处理列表。添加’–
conf-‘处理
argparse将更加繁琐。
argv = '--conf-key-1 value1 --conf-key-2 value2'.split()p = argparse.ArgumentParser()args, extras = p.parse_known_args(argv)def foo(astr): if astr.startswith('--conf-'): astr = astr[7:] astr = astr.replace('-','_') return astrd = {foo(k):v for k,v in zip(extras[::2],extras[1::2])}# {'key_1': 'value1', 'key_2': 'value2'}
该
extras分析可以更稳健-确保有适当的对,拒绝格式错误的按键, *** 作
=。
另一种方法是扫描
sys.argv的
--conf-字符串,并使用它们来构建
add_argument语句。
keys = [k for k in argv if k.startswith('--conf-')]p = argparse.ArgumentParser()for k in keys: p.add_argument(k, dest=foo(k))print vars(p.parse_args(argv))
如果您接受“ –conf key1 value1 –conf key2 value2 …”作为输入,则可以定义
parser.add_argument('--conf', nargs=2, action='append')
会产生:
namespace('conf': [['key1','value1'],['key2','value2']])
可以很容易地变成字典。或者,风俗习惯
Action可以
setattr(namespace, values[0],values[1])将键/值对直接输入到命名空间中。
我相信关于接受’“ key1:value”“ key2:value2”’输入存在SO问题。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)