Jupyter Notebook中相同代码报“_io.TextIOWrapper”不可调用的原因
问题原因解析
出现这个错误的核心原因是报错的Jupyter标签页中,read这个名称被意外覆盖成了非方法对象:
最常见的场景是你之前在该标签页里运行过类似这样的代码:
read = open('某个文件路径.txt')
此时read不再是文件对象的内置读取方法,而是变成了一个_io.TextIOWrapper类型的文件实例。当你后续执行q.read()时,Python会尝试调用这个文件对象(给它加了括号),而文件对象本身是不可调用的,因此抛出该错误。
另一种可能性是你在该标签页中对变量q进行过其他不当赋值操作,导致命名冲突,但前者的概率更高。
快速解决方法
- 先在该标签页执行
del read(如果是read被覆盖)或者del q,再重新运行你的代码; - 直接重启该标签页的内核,清空所有变量后再执行代码。
内容的提问来源于stack exchange,提问作者Alvin Abon
相关产品推荐
相关产品推荐

