2016-08-13 7 views
1

端末からPythonスクリプトを実行しているときにJSONをパラメータとして渡したいとします。端末からJSONオブジェクトを渡すことはできますか?しかし、私は端末からの文字列を渡すことができますが、私はそれの代わりにJSONが必要です。Jsonを渡す端末からPythonスクリプトを実行しているとき

期待通りの結果を得た次のような文字列を渡しました。

$ python test.py 'Param1' 

JSONが必要な場合は、エラーが発生します.jsonを渡すには、次のようにしてください。これを行うの

$ python test.py { 'a':1, 'b':2 } 
+1

'{ '':1、 'B':2} 'ISN」 JSONを有効にします。しかし、これはコマンドラインの引数です: '' {"a": "b":2} '' –

+0

中括弧はシェルにとって特別な意味を持っています。実際に文字列の値を使用する必要があります –

答えて

1

二つの方法:

$ 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)]) 
+0

私はこれを試しました。 jsonは '{"a":1、 "b":2、 "c":3、 "d":4}のようなより多くのキーを持つので、json.loads()メソッドで順序付けられていないキーと値のペアを取得します。私は、私が取得していないパラメータで提供されたjsonのための順序付けられたリストが必要です。これで私を助けてくれますか? – user2210996

+0

@ user2210996私は答えを更新しました。 –

関連する問題