通过以下连接,我试图从多个(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
答案 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