2017-05-03 63 views
0

我在一个目录中有三个.json文件,并且我试图通过此目录循环加载所有三个.json文件。然而,一些有趣的事情发生了:代码不会产生错误,但它只加载三个.json文件中的一个。我可以看到它是这样做的,因为我将json.load函数分配给一个变量,然后在解释器中输入变量['someKey'] ['someInnerKey'](.json文件具有一层嵌套)。在Python 2.7中通过循环目录加载多个.json文件

以下是我正在使用的代码。我花了一些时间在这里处理阅读和打开.json文件的许多帖子,但我没有找到一个“啊哈”!张贴至今。我会继续挖掘,但如果任何人有任何建议或提示,他们将非常感激。

import json, os 
for filename in os.listdir('D:/path1/path2/'): 
    if filename.endswith('.json'): 
     with open(os.path.join('D:/path1/path2/',filename)) as json_file: 
      variable = json.load(json_file) 
+2

你在每次迭代分配给'variable',因此覆盖以前的计算 – eugecm

+0

好的 - 这是有道理的。谢谢! –

回答

0

尝试:

import json, os 

variables = {} 

for filename in os.listdir('D:/path1/path2/'): 
    if filename.endswith('.json'): 
     with open(os.path.join('D:/path1/path2/',filename)) as json_file: 
      variables[filename] = json.load(json_file) 

然后你variables字典将包含加载的JSON的文件名作为关键字,而不是仅仅覆盖variable

+0

嘿德鲁湾 - 这是有效的,是有道理的。我可以使用variables.keys()来查看.json文件,并且可以访问每个文件中的sub和sub-sub。谢谢! –