argparse.add_argument() 中的 type=dict [英] type=dict in argparse.add_argument()

查看:39
本文介绍了argparse.add_argument() 中的 type=dict的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试将字典设置为可选参数(使用 argparse);以下是我到目前为止所拥有的:

parser.add_argument('-i','--image', type=dict, help='Generate an image map from the input file (syntax: {\'name\': ;, \'voids\': \'#08080808\', \'0\': \'#00ff00ff\', \'100%%\': \'#ff00ff00\'}).')

但是运行脚本:

 $ ./script.py -i {'name': 'img.png','voids': '#00ff00ff','0': '#ff00ff00','100%': '#f80654ff'}script.py: 错误: 参数 -i/--image: 无效的字典值: '{name:'

即使在解释器内部,

<预><代码>>>>a={'name': 'img.png','voids': '#00ff00ff','0': '#ff00ff00','100%': '#f80654ff'}

效果很好.

那么我应该如何传递参数呢?提前致谢.

解决方案

Necroing this: json.loads 也适用于此.看起来不太脏.

导入json导入参数解析test = '{"name": "img.png","voids": "#00ff00ff","0": "#ff00ff00","100%": "#f80654ff"}'解析器 = argparse.ArgumentParser()parser.add_argument('-i', '--input', type=json.loads)args = parser.parse_args(['-i', test])打印(参数.输入)

返回:

{u'0': u'#ff00ff00', u'100%': u'#f80654ff', u'voids': u'#00ff00ff', u'name': u'img.png'}

I'm trying to set up a dictionary as optional argument (using argparse); the following line is what I have so far:

parser.add_argument('-i','--image', type=dict, help='Generate an image map from the input file (syntax: {\'name\': <name>, \'voids\': \'#08080808\', \'0\': \'#00ff00ff\', \'100%%\': \'#ff00ff00\'}).')

But running the script:

 $ ./script.py -i {'name': 'img.png','voids': '#00ff00ff','0': '#ff00ff00','100%': '#f80654ff'}

script.py: error: argument -i/--image: invalid dict value: '{name:'

Even though, inside the interpreter,

>>> a={'name': 'img.png','voids': '#00ff00ff','0': '#ff00ff00','100%': '#f80654ff'}

works just fine.

So how should I pass the argument instead? Thanks in advance.

解决方案

Necroing this: json.loads works here, too. It doesn't seem too dirty.

import json
import argparse

test = '{"name": "img.png","voids": "#00ff00ff","0": "#ff00ff00","100%": "#f80654ff"}'

parser = argparse.ArgumentParser()
parser.add_argument('-i', '--input', type=json.loads)

args = parser.parse_args(['-i', test])

print(args.input)

Returns:

{u'0': u'#ff00ff00', u'100%': u'#f80654ff', u'voids': u'#00ff00ff', u'name': u'img.png'}

这篇关于argparse.add_argument() 中的 type=dict的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆