我想從終端運行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有特殊含義。你需要實際使用一個字符串值 –