使用Python读取多个JSON文件

时间:2014-08-15 22:20:44

标签: python json

通过以下连接,我试图从多个(2)文件中获取信息。这两个文件都是json格式。问题发生在关闭时,当我说json_data.close()时,它会关闭两个连接。它支持关闭一个连接,因为我缩进了第二个连接。

请帮助,python和json的新手

import json
from pprint import pprint

json_data=open('/tmp/AutoScale.json')
data = json.load(json_data)

for i in range(len(data["AutoScalingGroups"])):
    pprint(data["AutoScalingGroups"][i]["LaunchConfigurationName"])

#Second Connection

    json_data=open('/tmp/launchConfig.json')
    data = json.load(json_data)
    pprint(data["LaunchConfigurations"][i]["LaunchConfigurationName"])
    json_data.close()      # closed first connection
json_data.close()          # closed second connection

1 个答案:

答案 0 :(得分:0)

当您在for循环中重新分配json_data时,原始文件对象将丢失(实际上,它会丢失所有引用并在python销毁时关闭文件)。如果由于某种原因想要保留它,则需要在for循环中使用不同的变量。

在这里,我重命名了内部变量。有更好的方法来加载文件(例如,使用with子句,只做data = json.load(open('/tmp/AutoScale.json'))等...但你明白了。

import json
from pprint import pprint

json_data=open('/tmp/AutoScale.json')
data = json.load(json_data)

for i in range(len(data["AutoScalingGroups"])):
    pprint(data["AutoScalingGroups"][i]["LaunchConfigurationName"])
    json_data_2=open('/tmp/launchConfig.json')
    data_2 = json.load(json_data_2)
    pprint(data_2["LaunchConfigurations"][i]["LaunchConfigurationName"])
    json_data_2.close()      # closed second file
json_data.close()          # closed first file