【发布时间】:2011-11-29 08:38:36
【问题描述】:
我正在尝试将字典设置为可选参数(使用 argparse);以下是我目前所拥有的:
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\'}).')
但是运行脚本:
$ ./script.py -i {'name': 'img.png','voids': '#00ff00ff','0': '#ff00ff00','100%': '#f80654ff'}
script.py: error: argument -i/--image: invalid dict value: '{name:'
即使在解释器内部,
>>> a={'name': 'img.png','voids': '#00ff00ff','0': '#ff00ff00','100%': '#f80654ff'}
工作得很好。
那么我应该如何传递参数呢? 提前致谢。
【问题讨论】:
-
您可以从外部文件或标准输入中读取JSON等格式,然后对其进行解析。所以你的 argparse 类型实际上是一个文件。
-
正如@wim 在他的回答中所说,shell 在将参数传递给 python 之前正在处理它们。如果你在命令前加上'echo' (
echo ./script.py -i {'name': ...),你会看到 python 看到了什么(主要是它没有收到任何引号)。在您的参数中没有$的情况下(可以被 shell 解释为环境变量),您可以用双引号将您的 dict 括起来:./script.py -i "{'name': 'img.png', ....}"
标签: python dictionary argparse