在我与您讨论我的问题之前,我确定这不是重复的问题,我的问题很独特。
因此,我想使用以下代码在JSON文件中添加字典,请注意k['Process']
之类的项目是从单独的JSON文件中提取的,我没有在代码中包含该部分工作正常,并且与我的问题无关。
import json
data = {}
data['numdata'] = []
with open(r'E:\data\loc.json', 'a') as outfile:
if (k['Process']) == 'New' and (k['Test']) == 0:
Num1 = k['Num']
Time = k['Time']
data['numdata'].append({
'Num': Num1,
'Time': Time
})
json.dump(data, outfile, indent=4, sort_keys=False, ensure_ascii=False)
目标是每五分钟运行一次,并使其与数据字典一起附加JSON文件,因此在打开文件时采用附加方式。转储数据时出现问题。看起来像这样:
{
"numdata": [
{
"Num": "000540",
"Time": "2018-06-14 10:37:13"
}
]
}{
"numdata": [
{
"Num": "002077",
"Time": "2019-03-08 13:12:35"
}
]
}
自然地,这不是正确的JSON格式,我希望它看起来像这样,以便每次我将JSON附加到numdata
dict上时……只有我不知道需要更改什么我当前的代码:
{
"numdata": [
{
"Num": "000540",
"Time": "2018-06-14 10:37:13"
},
{
"Num": "002077",
"Time": "2019-03-08 13:12:35"
}
]
}
我们非常感谢您的帮助!
答案 0 :(得分:1)
当您在其中添加条目时,您的数据字典和numdata列表为空...您什么都没有追加,您肯定需要在numdata列表中加载其中的内容,然后才追加。
编辑:只是为了澄清是否有其他人在寻找答案,我以自己的话说了他的数据字典和numdata列表超出范围。
在原始代码中,用户创建一个新的空字典和列表,然后追加到该字典中,然后将其转储回json中。
数据需要放在某个地方,然后附加到该地方。这是一个小例子:
data = {'list':['apple', 'banana', 'orange']}
def update_data(newitem):
data = {}
data['list'] = []
data['list'].append(newitem)
print(data)
上面的update_data函数将显示空字典,如下所示:
{'list':[<newitem>]}
我们追求的结果更像是:
{'list':['apple', 'banana', 'orange', <newitem>]}
解决方法是先在相同范围内加载数据,然后再附加到该数据。
def update_data(newitem):
global data
data['list'].append(newitem)
print(data)