类型错误:“ _ io.TextIOWrapper”对象不可调用
TypeError: ‘_io.TextIOWrapper’ object is not callable
Python:“TypeError: ‘ _ io.TextIOWrapper’ object is not callable”发生在我们尝试调用文件对象时,就好像它是一个函数一样。要解决该错误,请确保函数和变量名称与文件对象的访问属性之间没有任何冲突。
下面是错误如何发生的示例。
主程序
with open('example.txt', 'r', encoding='utf-8') as f: # ⛔️ TypeError: '_io.TextIOWrapper' object is not callable f()
我们试图调用_io.TextIOWrapper
对象 is 如果它是一个函数并得到错误。
如果您尝试写入文件,请使用write()
文件对象上的方法。
主程序
file_name = 'example.txt' with open(file_name, 'w', encoding='utf-8') as my_file: my_file.write('first line' + '\n') my_file.write('second line' + '\n') my_file.write('third line' + '\n')
如果您需要从文件中读取,请使用简单的for
循环。
主程序
with open('example.txt', 'r', encoding='utf-8') as f: lines = f.readlines() print(lines) print(lines[0]) for line in lines: print(line)
确保您没有与共享相同名称的变量和函数发生任何冲突。
开始调试的一个好方法是print(dir(your_object))
查看 a 具有哪些属性_io.TextIOWrapper
。
这是打印 a 的属性的示例_io.TextIOWrapper
。
主程序
with open('example.txt', 'r', encoding='utf-8') as f: # [... 'close', 'closed', 'detach', 'encoding', 'errors', # 'fileno', 'flush', 'isatty', 'line_buffering', 'mode', # 'name', 'newlines', 'read', 'readable', 'readline', # 'write', 'write_through', 'writelines' ...] print(dir(f))
如果将一个类传递给
dir()函数,它会返回该类属性的名称列表,并递归地返回其基类的属性。
您可能打算使用点表示法访问属性,而不是将其
_io.TextIOWrapper
作为函数调用。
结论
Python:“TypeError: ‘ _ io.TextIOWrapper’ object is not callable”发生在我们尝试调用文件对象时,就好像它是一个函数一样。要解决该错误,请确保函数和变量名称与文件对象的访问属性之间没有任何冲突。