【问题标题】:Python writing to JSON file adds extra bracketsPython 写入 JSON 文件会添加额外的括号
【发布时间】:2020-10-11 09:30:14
【问题描述】:

我正在处理的项目的一部分涉及更新 JSON 文件中的数据以匹配给定的生日。这是我写的代码:

with open('files/{}.json'.format(ctx.guild.id), 'w+') as file:
    addData = {"usersbday":{str(user.id): combined}}
    data = json.load(file)
    data.update(addData)
    file.seek(0)
    json.dump(data, file, indent=4)

还有我的 JSON(末尾添加了括号):

{
"info": {
    "prefix": ".",
    "color": "0x76b04a"
},
"users": {
    "524251322823856149": "Paris"
},
"usersbday": {
    "524251322823856149": "august 5"
}}
}

usersbday 中更新的生日包含更少的字符(例如,从august 5 更改为may 1)时,会添加额外的括号。有没有办法在写入文件时避免这种情况,或者我是否只需要在每次写入文件时添加 catch 语句,以防添加额外的括号?当我更新users 字典中的位置时,也会发生同样的问题——我的代码基本上是相同的。有任何想法吗?谢谢!

【问题讨论】:

    标签: json python-3.x discord.py


    【解决方案1】:

    最简单的解决方案:在dump数据之后立即添加file.truncate()(或在seek之后,尽管这会完全清空文件,您也可以先写入新数据以限制丢弃多少) ,这将删除您写入的数据之外的所有数据。

    这并不特定于 JSON,它只是你所说的“无论文件当前指向何处,修剪文件以删除它之外的所有数据”。

    【讨论】:

    • 做到了!谢谢。