我在JSON文件中的字典如下所示:
{
'key1':value1
'key2':value2
}
我正在编写一个循环,每次迭代都会在文件中为字典添加一个新密钥。例如,在一次迭代之后,文件中的字典如下所示:
{
'key1':value1
'key2':value2
'key3':value3
}
我想使用一种方法直接将新密钥附加到文件中的字典中。我不想读取文件,更改数据并再次将其写回。有没有办法做到这一点?
答案 0 :(得分:1)
这是一个相当粗略的实现,假设文件以}结尾和换行符(解释为-2):
with open('data.json','rb+') as f:
f.seek(-2,2)
f.write(b"'new_key':new_value\n}\n")
答案 1 :(得分:0)
你可以通过找到最后的结束大括号,然后使用file.seek
去那个位置来做到这一点。然后你可以写下你的新值,如下所示:
with open(path, 'rb+') as f:
s = f.read()
index = s.rfind('}')
f.seek(index)
f.write(',\n[YOUR JSON HERE]\n')
f.write(s[index:])
请注意,如果您的结构实际上是一个列表,那么您需要使用]
,否则这应该是相同的。另请注意,根据您是否正常使用尾随逗号(即{a: 1, b: 13, c: 231,}
),您可能要省略我在第一个write
命令中添加的逗号。