0

我正在尝试创建一个更新 json 文件中的值的命令,但是发生的情况是整个 json 文件被删除,期望一个配置文件甚至不是目标配置文件。

杰森布局:

{"name": "name 1", "trainings": 0, "trainings needed": 10}, {"name": "name 2", "trainings": 0, "trainings needed": 10}, //ect

预期输出:

{"name": "name 1", "trainings": 1, "trainings needed": 10}, {"name": "name 2", "trainings": 0, "trainings needed": 10}, //ect

实际输出:

{“名称”:“名称 6”,“培训”:0,“需要培训”:10}

代码片段:

@bot.command()
async def add(ctx, a:str):
    a = a.replace("<","")
    a = a.replace(">","")
    a = a.replace("!","")
    a = a.replace("@","")
    member = await bot.fetch_user(a)
    print(member.name)
    
    with open('json_file.json', "r") as f:
      data = json.load(f)
      

    for i in data:

      if i['name'] == member.name:
         i['trainings'] = 1
    with open("json_file.json", "w") as jsonFile:
      json.dump(i, jsonFile)
4

2 回答 2

2

最后一行应该是

json.dump(data, jsonFile)

否则,您将保存您迭代的最后一个配置文件。

于 2021-02-24T01:57:34.733 回答
0

您的 json 文件应如下所示:

[
  {"name": "name 1", "trainings": 0, "trainings needed": 10},
  {"name": "name 2", "trainings": 0, "trainings needed": 10},
  ...
]

当您写信时json_file.json,第一个参数应该是data,而不是i

    with open("json_file.json", "w") as jsonFile:
      # json.dump(i, jsonFile) # incorrect
      json.dump(data, jsonFile)
于 2021-02-24T01:55:59.193 回答