在内置的蟒蛇开放的功能,是个什么模式之间准确的区别w,a,w+,a+,和r+?
特别是,文档暗示所有这些都允许写入文件,并说它打开文件"具体"附加",写入"和"更新",但没有定义这些术语的含义.
我有一些带有一些数据的json文件,并且偶尔会更新这个文件.
我读了这个文件:
with open('index.json', 'rb') as f:
idx = json.load(f)
Run Code Online (Sandbox Code Playgroud)
然后检查是否存在来自潜在新数据的密钥,如果密钥不存在则更新文件:
with open('index.json', mode='a+') as f:
json.dump(new_data, f, indent=4)
Run Code Online (Sandbox Code Playgroud)
但是,此过程只是创建新的json对象(python dict)并将其作为新对象追加到输出json文件中,使文件无效json文件.
有没有简单的方法将新数据附加到json文件而不覆盖整个文件,通过更新初始字典?
如何在任何节点(value1、value2、value3、value4、value5、value6、value7)中使用 Python 更改 JSON 中的值:
{
"key1": "value1",
"level2": {
"key2": "value2",
"key3": "value3",
"level3": [
{
"key4": "value4",
"level5": [
{
"key5": "value5",
"key6": "value6"
}
],
"key7": "value7"
}
]
}
}
Run Code Online (Sandbox Code Playgroud)
在使用其他一些值更改例如 Value6 之后 - 我想以一种很好的打印格式(与上面相同)打印新的 JSON。
谢谢。