我正在尝试从 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)
data.json 中的新数据无效,如jsonLint 所示。 。我究竟做错了什么?这是新数据
{
"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”)打开文件之外,您还通过定义一个新的内联字典来覆盖旧的“配置”树。
而不是:
result.update({config:{test:{'Data1':2600,'Data2':2900}}})
试试这个:
result[config][test] = {'Data1': 2600, 'Data2': 2900}
这应该会为您提供示例中正在寻找的结果。当您添加 TestCase2 时,它会让 result['Config1']['TestCase1']
持续存在。您可能还需要通过将 result[config]
设置为 {}
(如果为 None
)来确保配置树存在。
关于python:从文件读取json数据并附加更多数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36512112/