我正在使经济机器人不和谐,它将把用户的钱存储在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)```
答案 0 :(得分:0)
在您的代码中,您为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文件真正适合的。它们更适合在进程之间发送数据,或记录不经常加载甚至更新不频繁的数据。