2016-05-01 15 views
1

イム新しい使用してPythonと私のpythonを使用して、私のJSONファイルからいくつかの値を印刷することができますどのように知っていただきたいと思いますが、次は私のJSONファイルPythonでjsonファイルから特定の値を出力する方法は?

{ 
    "[email protected][email protected]": { 
     "__type__": "TestResult", 
     "command": "/home/gfx/intel-graphics/intel-gpu-tools/tests/gem_reloc_overflow --run-subtest single-overflow", 
     "dmesg": "", 
     "environment": "PIGLIT_PLATFORM=\"mixed_glx_egl\" PIGLIT_SOURCE_DIR=\"/home/gfx/intel-graphics/intel-gpu-tools/piglit\"", 
     "err": "(gem_reloc_overflow:19562) CRITICAL: Test assertion failure function reloc_tests, file gem_reloc_overflow.c:260:\n(gem_reloc_overflow:19562) CRITICAL: Failed assertion: __gem_execbuf(fd, &execbuf) == -14\n(gem_reloc_overflow:19562) CRITICAL: error: -22 != -14\nSubtest single-overflow failed.\n**** DEBUG ****\n(gem_reloc_overflow:19562) DEBUG: relocation_count=4294967295\n(gem_reloc_overflow:19562) CRITICAL: Test assertion failure function reloc_tests, file gem_reloc_overflow.c:260:\n(gem_reloc_overflow:19562) CRITICAL: Failed assertion: __gem_execbuf(fd, &execbuf) == -14\n(gem_reloc_overflow:19562) CRITICAL: error: -22 != -14\n**** END ****\n", 
     "exception": null, 
     "out": "IGT-Version: 1.14-g1e9a3ac (x86_64) (Linux: 4.6.0-rc4-drm-intel-nightly-ww17-commit-1e81bac+ x86_64)\nStack trace:\n #0 [__igt_fail_assert+0x101]\n #1 [reloc_tests+0x6d6]\n #2 [<unknown>+0x6d6]\nSubtest single-overflow: FAIL (8.469s)\n", 
     "pid": 19562, 
     "result": "fail", 
     "returncode": 99, 
     "subtests": { 
      "__type__": "Subtests" 
     }, 
     "time": { 
      "__type__": "TimeAttribute", 
      "end": 1462072402.5360818, 
      "start": 1462072393.7328644 
     }, 
     "traceback": null 
    } 
} 

であると私は必要な値は「結果:失敗します」 。

これまでのところ、私はこのコードを持っている:

import json 

with open("9.json") as json_file: 
json_data = json.load(json_file) 
print(json_data) 

thaks

+0

可能な重複tp://stackoverflow.com/questions/12788217/extract-single-value-from-json-response-python) – flyingmeatball

+0

なぜこの質問はlinuxタグを運ぶのですか? –

答えて

1

はこの打撃を与える結果と印刷されます!

for key, value in json_data.iteritems(): 
    result = value['result'] 

print result 

(コメント欄で質問に対する)UPDATE: 複数のファイルを持っていて、一度に情報のすべてを保存したい場合は - 辞書にすべてを投げてみてください。これは、鍵を何にしたいかによって異なる場合があります。しかし、これは{json_key: result_value}のdicitonaryを作成します(これを試してみてください。

all_results = {} 
json_file_list = ['file_1.json', 'file_2.json'] 
for file in json_file_list: 
    with open(file) as json_file: 
     json_data = json.load(json_file) 
     for key, value in json_data.iteritems(): 
      if 'result' in value: 
       all_results[key] = value['result'] 
return all_results 
+0

それは私のために働いてくれてありがとう、私はもっと物事を求めることができるかどうかは分かりませんが、可能ならば、このスクリプトを改善する方法がいくつかあります。それを繰り返し実行することが可能であり、異なるものを複数の変数に格納することができますか?結果はfail、pass、dmesg-warn、dmesg-fail、skip、incompleteです。それが可能でないなら、私は感謝を理解するでしょう – shaveax

+0

@shaveax更新を参照してください! – tknickman

+0

ありがとう@tknickman、それは私のために働く:) – shaveax

1

json.load関数は、辞書(タイプdictのオブジェクト)を返します。

ディクショナリはキーとワイルスを関連付けます。あなたの特定のケースでは

value = dictionary[key] 

:辞書内の値にアクセスするには、次の構文を使用することができます

result = json_data['result'] 
0

JSONデータは、Pythonの辞書として保存されている

次のようにそのため、あなたが「結果」の値にアクセスすることができます

json_data["[email protected][email protected]"]["result"] 

WRTあなたのコード:[JSON応答のPythonから単一の値を抽出](HTの

import json 

with open("9.json") as json_file: 
     json_data = json.load(json_file) 


print(json_data["[email protected][email protected]"]["result"]) 
関連する問題