我在python编程中非常新,所以我创建了下面的python脚本,以便在包含3000或更多json文件的文件夹中迭代,我不知道如何在这300个json文件中迭代以避免手动放入脚本中,并且我需要在json文件所在的位置放置一个特定的路径,并且我不知道如何声明它。
import json
all_results = {}
json_file_list = ['1.json', '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运行我的python脚本后,我有以下错误:
File "getResult.py", line 20
return all_results
SyntaxError: 'return' outside function这就像我的jsons文件
{“igt@gem_reloc_overflow@单溢出”:{ "type":"TestResult",“命令”:--运行子测试单溢出“,"dmesg":”,“环境”:“PIGLIT_SOURCE_DIR=\"/home/gfx/intel-graphics/intel-gpu-tools/piglit\"",”mixed_glx_egl\ "err":"(gem_reloc_overflow:19562)关键:测试断言失败函数reloc_tests,文件gem_reloc_overflow.c:260:\n(gem_reloc_overflow:19562)危急:失败断言:gem_execbuf(fd,关键:错误:-22 != -14\n子测试单溢出失败。\n*调试*\n(gem_reloc_overflow:19562)调试: gem_reloc_overflow.c:260:\n(gem_reloc_overflow:19562):测试断言失败函数reloc_tests,文件gem_reloc_overflow.c:260:\n(gem_reloc_overflow:19562)关键:失败断言:__gem_execbuf(fd )== -14\n(gem_reloc_overflow:19562)关键:错误:-22 != -14\n*结束*\n“,”gem_reloc_overflow:19562“:null,"out":"IGT-Version: 1.14-g1e9a3ac (x86_64) (Linux: x86_64 x86_64)\nStack跟踪:\n #0 __igt_fail_assert+0x101\n #1 reloc_tests+0x6d6\n 2+0x6d6\n nSubtest单溢出: FAIL (8.469s)\n","pid":19562,“结果”:“失败”,“返回代码”:99,“子测试”:{ "__type":“子测试”},“时间”:{ "type":"TimeAttribute","end":1462072402.5360818,"start":1462072393.7328644 },"traceback":null }
欢迎任何帮助,谢谢
发布于 2016-05-08 04:58:33
也许您想要print all_results而不是return all_results。或者你可以在找到它们的时候一个一个地打印。
发布于 2016-05-08 05:03:30
要迭代目录中的文件而不必手动输入文件名,可以使用os.walk()或os.listdir()。有关更多详细信息,请参阅this question。
语法错误似乎是不言而喻的。您有一个不在函数定义中的return语句;这是无效的Python。如果要输出结果,请使用print。
发布于 2016-05-08 06:54:12
将JSON文件目录的路径存储到变量
mypath = "/home/json_file_directory"使用os.listdir()列出所有json文件。
一旦您有json文件名,请使用
os.path.join(mypath,filename) #to get the exact path of file.https://stackoverflow.com/questions/37096347
复制相似问题