python导⼊json⽂件参数_Python:如何从JSON⽂件中摄取参
数?
解析器中的args是⼀个argparse.Namespace对象,可以很容易地将with转换为字典vars(args)
-swd SomeString int 35 -f将产⽣类似namespace(swd='SomeString', int=35, f=True)和{}的东西。在
等效的JSON将解码为类似的字典。在
可以将字典转换(返回)为具有以下属性的命名空间:
^{pr2}$
python怎么读取json文件据我所知,没有⼀个包可以将argparse的推理应⽤于字典(它可能是由json.loads创建的)。在
最近有⼈问是否有⼀种⽅法可以基于namespace重新创建sys.argv字符串。你可以查⼀下。在
我可以⽤这段代码重新创建⼀个类似sys.argv的列表
^{3}$
然后可以通过以下⽅式将其传递给解析器:args = parser.parse_args(argv)
=========================
您可以做的另⼀件事是使⽤默认值创建⼀个字典,然后从JSON字典中更新它:In [27]: defaultd=dict(int=20,
strwdef='DEFAULTSTRING',snd=None,flag=False)
In [28]: defaultd
Out[28]: {'strwdef': 'DEFAULTSTRING', 'snd': None, 'int': 20, 'flag': False}
In [29]: defaultd.update(dd)
In [30]: defaultd
Out[30]:
{'strwdef': 'DEFAULTSTRING',
'f': True,
'flag': False,
'swd': 'SomeString',
'snd': None,
'int': 35}
我刚注意到⼀个问题。对于defaultd我使⽤了长名称“flag”名称,但是在JSON dict中我使⽤了短的“f”名称。在
我可以有选择地从JSON dict中复制如下内容:In [32]: for k in defaultd:
....: if k in dd:
....: defaultd[k]=dd[k]
....:
In [33]: defaultd
Out[33]: {'strwdef': 'DEFAULTSTRING', 'snd': None, 'int': 35, 'flag': False}
处理“坏”值或别名将更加复杂。在
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论