在python脚本中修复“ TypeError:'_ io.TextIOWrapper'对象不可下标”

时间:2019-05-22 23:13:27

标签: python json discord discord.py discord.py-rewrite

我正在尝试将某些数据存储在我正在使用的机器人的config.json中,但是每次尝试运行它时,都会出现相同的错误。

我正在运行最新版本的Python 3.7.3。我试图四处移动config.json文件,但无济于事。我可能错过了非常明显的东西,但我不知道是什么。

在引发异常的地方:

with open("config.json", "r") as infile:
    try:
        CONFIG = json.load(infile)
        _ = infile["token"]
        _ = infile["owner"]

    except (KeyError, FileNotFoundError):
        raise EnvironmentError(
            "Your config.json file is either missing, or incomplete. Check your config.json and ensure it has the keys 'token' and 'owner_id'"
        )

预期结果:代码从文件中提取tokenowner,然后继续运行机器人。

实际结果:Bot没有启动。追溯输出-

  File "/Users/prismarine/Desktop/Project_Prismarine/core.py", line 11, in <module>
    _ = infile["token"]
TypeError: '_io.TextIOWrapper' object is not subscriptable

1 个答案:

答案 0 :(得分:1)

您正试图将文件句柄称为字典,而不是存储在CONFIG中的JSON字典。相反,请尝试:

with open("config.json", "r") as infile:
    try:
        CONFIG = json.load(infile)
        token = CONFIG["token"]
        owner = CONFIG["owner"]

    except (KeyError, FileNotFoundError):
        raise EnvironmentError(
            "Your config.json file is either missing, or incomplete. Check your config.json and ensure it has the keys 'token' and 'owner_id'"
        )

还要注意,如果在任何地方都不会使用下划线,则通常将它们用作变量名,并且下划线将分配给CONFIG['token'],然后根据情况立即重新分配给CONFIG['owner']。如果您打算以后使用它们,我给它们提供了一些新的唯一变量名称。