首页 > 解决方案 > 如果他们不存在,我如何让我的不和谐机器人将某人添加到 json 文件中

问题描述

我正在制作一个不和谐的经济机器人,它将用户的钱存储在一个 json 文件中。但我不知道如何让它将另一个用户添加到 json 文件中,如果他们不存在的话。

async def work(ctx):
    oldmny=json.load(open("money.json", "r"))[str(ctx.author.id)]
    newmny=random.randint(10,100)
    nowmny=oldmny+newmny
    x={
        str(ctx.author.id):nowmny
}
    json.dump(x, open("money.json", "w+"), indent = 4)```

标签: pythondiscord

解决方案


在您的代码中,您分配给x一个全新的字典,具有单个键/值对。然后,您将该字典写入您读取的同一个 JSON 文件中。相反,您应该更新从 JSON 文件加载的字典,并将更新后的字典写回文件。您的代码应该是:

async def work(ctx):
    money = json.load(open("money.json", "r"))
    oldmny = [str(ctx.author.id)]
    newmny = random.randint(10,100)
    nowmny = oldmny + newmny
    money[ctx.author.id] = nowmny
    json.dump(money, open("money.json", "w+"), indent = 4)

但是请注意,您使用 JSON 作为数据存储,任何更新,即使是单个项目(如您的情况),都需要对整个文件进行完全读取和完全写入。这并不是 JSON 文件真正适合的地方。它们更适合在进程之间发送数据,或者记录不经常加载,甚至更不经常更新的数据。


推荐阅读