2016-05-01 3 views
1

им новый, используя Python и я хотел бы знать, как я могу напечатать некоторые значения из моего файла JSON с помощью питона, следующий мой JSON файлкак печатать определенные значения из json-файла с помощью python?

{ 
    "[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

Возможный дубликат [Извлечение одного значения из JSON ответ Python] (ХТ 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 (на вопрос в комментариях): Если у вас есть несколько файлов и хотите хранить всю информацию сразу - попробуйте бросить все это в словаре. Это может варьироваться в зависимости от того, кем вы хотите. Но попробуйте это (это создаст dicitonary из {json_key: result_value}:.

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

спасибо, что это работает для меня, я не знаю, могу ли я попросить одну вещь больше, но если возможно, есть какой-то способ улучшить этот скрипт, я имею в виду, что у меня есть 100 jsons в папке, каждая из которых имеет разные результаты, это возможно, итерация на них и хранение их разностей приводит к нескольким переменным? результаты будут: fail, pass, dmesg-warn, dmesg-fail, skip, uncomplete. если это невозможно, я пойму спасибо – shaveax

+0

@shaveax посмотреть обновление! – tknickman

+0

спасибо @tknickman, он работает для меня :) – shaveax

1

json.load функция возвращает словарь (объект типа dict).

Словарь ассоциирует ключи с vlues. Чтобы получить доступ к значениям в словаре, вы можете использовать этот синтаксис:

value = dictionary[key] 

В вашем конкретном случае:

result = json_data['result'] 
0

Данные JSON хранится в словаре питона

Таким образом, вы можете получить доступ к значению «результата» следующим образом:

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

WRT код:

import json 

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


print(json_data["[email protected][email protected]"]["result"]) 
Смежные вопросы