您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

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

使用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 astr

d = {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问题。

python 2022/1/1 18:36:58 有247人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶