我正在尝试从json文件中读取现有数据,并尝试使用python(我是python新手)将更多数据附加到文件中。这是我在脚本中读取的data.json文件中的现有数据:
{
"Config1": {
"TestCase1": {
"Data1": 200,
"Data2": 2715
}
},
"Config2": {
"TestCase1": {
"Data1": 2710,
"Data2": 2715
}
}
}
阅读后,我想附加TestCase2数据。这就是我在做什么:
with open("data.json") as json_file: #load existing data
json_data = json.load(json_file)
test='TestCase2'
result=json_data
myConfigs = ['Config1','Config2']
for each, config in enumerate(myConfigs):
result.update({config:{test:{'Data1':2600,'Data2':2900}}})
with open('data.json', 'a') as outfile:
json.dump(result, outfile)
如jsonLint所指示,data.json中的新数据无效。我究竟做错了什么?这是新数据
{
"Config1": {
"TestCase1": {
"Data1": 200,
"Data2": 2715
}
},
"Config2": {
"TestCase1": {
"Data1": 2710,
"Data2": 2715
}
}
} {
"Config1": {
"TestCase2": {
"Data1": 2600,
"Data2": 2900
}
},
"Config2": {
"TestCase2": {
"Data1": 2600,
"Data2": 2900
}
}
}
最佳答案
除了以错误的模式(应为“ w”)打开文件之外,您还通过定义新的dict内联覆盖了旧的“ config”树。
代替:
result.update({config:{test:{'Data1':2600,'Data2':2900}}})
尝试这个:
result[config][test] = {'Data1': 2600, 'Data2': 2900}
这样可以为您的示例提供所需的结果。添加TestCase2时,它将使
result['Config1']['TestCase1']
保持不变。您可能还需要通过将result[config]
设置为{}
(如果它是None
)来确保配置树存在。关于python - python:从文件中读取json数据并追加更多数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36512112/