猿问

为什么这个不和谐的 python 命令只运行一次?

我已经尝试让这段代码正常工作一段时间了;


@bot.group()

async def donator(ctx):

    '''Commands for donators'''


@donator.command()

async def register(ctx, Steam_ID : str):

    '''Registers your donator status'''

    if SteamID(Steam_ID).is_valid():

        convert = SteamID(Steam_ID)

        Steam64ID = convert.as_64


        author = ctx.author


        with open('donators.json') as d:

            data = json.load(d)


        newstring = {

        f"{author.id}": {

                "steam": f"{Steam64ID}",

                "tier": "6"

            }

        }


        data.update(newstring)


        with open('donators.json', 'w') as d:

            json.dump(data, d, indent=2)


    else:

        ctx.send("Invalid Steam ID!\nThis command accepts any kind of Steam ID.")

当我运行它时,它将产生我想要的结果,写入一个包含正确信息的有效 json 文件,没有错误。如果我再次运行它,什么也不会发生,绝对什么也不会发生。这就是 json 最初的结构。


{

  "000000000000000000": {

    "steam": "00000000000000000",

    "tier": "0"

  }

}

运行 python 脚本后,它看起来像这样


{

  "000000000000000000": {

    "steam": "00000000000000000",

    "tier": "0"

  },

  "240912491624923137": {

    "steam": "76561197960265729",

    "tier": "6"

  }

}

如果我第二次运行它,什么也不会发生。没有写入任何内容,json 文件保持不变并且没有错误。


守着一只汪
浏览 131回答 1
1回答

九州编程

您应该将 JSON 文件构造为字典列表。{"data": [{"id": 0, "name": "Hello"}, {"id": 1, "name": "Test"}]}
随时随地看视频慕课网APP

相关分类

Python
我要回答