我正在尝试将某些数据存储在我正在使用的机器人的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'"
)
预期结果:代码从文件中提取token
和owner
,然后继续运行机器人。
实际结果:Bot没有启动。追溯输出-
File "/Users/prismarine/Desktop/Project_Prismarine/core.py", line 11, in <module>
_ = infile["token"]
TypeError: '_io.TextIOWrapper' object is not subscriptable
答案 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']
。如果您打算以后使用它们,我给它们提供了一些新的唯一变量名称。