关于json:Python错误:“AttributeError:__enter __”

Python Error: “AttributeError: __enter__”

所以,我无法加载我的json文件,我不知道为什么,任何人都可以解释我做错了什么?

1
2
3
4
async def give(msg, arg):
    if arg[0] == prefix +"dailycase":
                with open("commands/databases/cases.json","r") as d:
                     data = json.load(d)

出于某种原因,我收到此错误:

1
2
    with open("commands/databases/cases.json","r") as d:
AttributeError: __enter__


最有可能的是,你已经将Python内置的open函数重新分配给代码中的其他东西(几乎没有其他合理的方法可以解释这个异常)。

然后with语句将尝试将其用作上下文管理器,并在首次进入with块时尝试调用其__enter__方法。这会导致您看到的错误消息,因为您的对象名为open,无论它是什么,都没有__enter__方法。

在Python模块中查找要重新分配open的位置。最明显的是:

  • 全局范围内的函数,如def open(..)
  • 使用open =直接重新分配
  • 进口如from foo import openimport something as open

该函数最可能是可疑的,因为它似乎是open实际上是可调用的。

为了帮助您找到意外绑定的对象open,您还可以尝试

1
print('open is assigned to %r' % open)

紧接在with语句之前。如果它没有说,你就找到了罪魁祸首。