python中的json.dump()是否重写或附加json文件

2024-06-01 00:40:34 发布

您现在位置:Python中文网/ 问答频道 /正文

在使用json.dump()时,我注意到它似乎在重写整个文档。这是正确的吗?还有没有其他方法可以像.append()deos那样用列表附加到字典中

当我像这样编写函数并更改键值(name)时,似乎该项被追加了

filename = "infohere.json"
name = "Bob"
numbers = 20

#Write to JSON
def writejson(name = name, numbers = numbers):
    with open(filename, "r") as info:
        xdict = json.load(info)
    
    xdict[name] = numbers

    with open(filename, "w") as info:
        json.dump(xdict, info)

但是,当您这样写出来时,您可以看到代码清楚地覆盖了整个dictionary/json文件

filename = infohere.json
dict = {"Bob":23, "Mark":50}
dict2 = {Ricky":40}

#Write to JSON
def writejson2(dict):
    with open(filehere, "w") as info:
        json.dump(dict, info)

writejson(dict)
writejson(dict2)

在第二个示例中,它只显示最后一个日期输入,这让我相信这是在重写整个文档。如果它在每个json.dump期间写入整个文档,这是否会导致更大的json文件出现问题,如果是这样的话,还有另一种方法,如.append(),但用于处理json

提前谢谢


Tags: 方法name文档infojsonaswithopen
1条回答
网友
1楼 · 发布于 2024-06-01 00:40:34

都不是

json.dump在写入文件时不决定是否删除以前的内容。当您运行open(filehere, "w")时,就会发生该决定这就是删除旧内容的方法

但是:普通的JSON不适合附加

单个JSON文档是一个对象。这种格式有多种变体,允许在一个文件中包含多个文档,其中最常见的是JSONL(每行有一个JSON文档)。除非您使用这种格式,否则尝试将JSON附加到非空文件通常不会导致成功解析的结果

相关问题 更多 >