【问题标题】:Python stops code for no reason when reading JSON filePython在读取JSON文件时无缘无故停止代码
【发布时间】:2022-01-25 12:40:17
【问题描述】:

大家好,让我们直奔主题吧。上次我决定为我的机器人制作每个服务器的配置文件。我还想添加在机器人更新时向特定频道发送消息的命令,但我知道不是每个人都想收到此消息或想为此创建一个特殊频道,所以我在配置中添加了选项来更改它。 这就是配置文件现在的样子:

{
    "update": [
        {
            "wlaczone": true,
            "kanal": 757971193205882900
        }
    ]
}

这就是命令的样子:

@bot.command()
@commands.check(user_is_me)
async def update(ctx):
    print('1')
    for server in bot.guilds:
        print('2')
        with open(f'serverSetting/{server.id}.json', 'r', encoding='utf-8') as a:
            print('3')
            d = json.load(a)
            print(d)
            print('4')
            print(d["update"]["wlaczone"])
            for w in d["update"]["wlaczone"]:
                print(w)
                print('5')
                if w == True:
                    print('6.1')
                    c = d['update']['kanal'] 
                    print('7')
                    channel = discord.utils.get(bot.get_all_channels(), id=c)
                    print('8')
                    try:
                        print('9')
                        await channel.send("@everyone Bot dostał właśnie update! Sprawdź |changelog \nsory za ping xD\n~nitolar play")
                        print('10')
                    except Exception:
                        continue
                    else:
                        break
                elif w == False:
                    print('6.2')
                    pass

并且命令在打印 4 号后停止工作。我不知道为什么会发生这种情况,因为这样的事情从未发生在我身上,但是当我删除 ["wlaczone"] 时它可以工作并打印此 {'wlaczone': True, 'kanal': 757971193205882900}。如果有人可以帮助我,那就太棒了。感谢您的帮助!

【问题讨论】:

  • d["update"] 包含一个列表....不是花药字典。尝试 d["update"][0]["wlaczone"] 索引到列表中,然后是包含的 dict - 或者修复你的 json!
  • 此外,这应该提供错误消息和堆栈跟踪 - 类似于列表只能由整数索引的内容......为什么你忽略你得到的错误消息?

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


【解决方案1】:

d["update"] 是一个列表,试试d["update"][0]["wlaczone"]

注意代码引发的异常。

【讨论】:

  • 由于某种原因,我没有在控制台中引发异常。
猜你喜欢
  • 2013-08-11
  • 1970-01-01
  • 1970-01-01
  • 2015-03-25
  • 2021-11-22
  • 1970-01-01
  • 1970-01-01
  • 2021-07-23
  • 2013-08-09
相关资源
最近更新 更多