使用argparse创建变量键值对(python)

使用argparse创建变量键值对(python),第1张

使用argparse创建变量键/值对(python)

我要尝试的第一件事是使用

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问题。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5647987.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存