我想从终端运行python脚本时传递JSON作为参数。我可以从终端传递JSON对象吗?但是,我只能从终端传递字符串,但我需要JSON而不是那个。传递Json从终端运行python脚本
我试过的传递字符串如下给出了预期的结果。
$ python test.py 'Param1'
但是如果我想JSON,它给error.I试图与下面通过JSON。
$ python test.py { 'a':1, 'b':2 }
我想从终端运行python脚本时传递JSON作为参数。我可以从终端传递JSON对象吗?但是,我只能从终端传递字符串,但我需要JSON而不是那个。传递Json从终端运行python脚本
我试过的传递字符串如下给出了预期的结果。
$ python test.py 'Param1'
但是如果我想JSON,它给error.I试图与下面通过JSON。
$ python test.py { 'a':1, 'b':2 }
两种方式这样做的:
$ cat a.py
import json
import sys
print json.loads(sys.stdin.read().strip())
$ python a.py <<< '{ "a":1, "b":2 }'
{u'a': 1, u'b': 2}
$ echo '{ "a":1, "b":2 }' | python a.py
{u'a': 1, u'b': 2}
$ cat c.py
import json
import sys
print json.loads(sys.argv[1])
$ python c.py '{ "a":1, "b":2 }'
{u'a': 1, u'b': 2}
跟进(保持顺序):
$ cat d.py
import json
import sys
from collections import OrderedDict
print json.loads(sys.argv[1], object_pairs_hook=OrderedDict)
$ python d.py '{ "a":1, "b":2, "c":3, "d":4 }'
OrderedDict([(u'a', 1), (u'b', 2), (u'c', 3), (u'd', 4)])
我试过这个。随着json有更多的键,如'{“a”:1,“b”:2,“c”:3,“d”:4}',我用json.loads()方法得到无序的键和值对。我需要一个json的有序列表,这些参数是我没有得到的。你能帮我吗? – user2210996
@ user2210996我已更新答案。 –
'{ 'A':1, 'B':2}'ISN”有效的JSON。但你可以通过这个命令行参数:''{“a”:1,“b”:2}'' –
大括号对shell有特殊含义。你需要实际使用一个字符串值 –