Python3.10读取txt文件返回_io.TextIOWrapper对象问题解决
Python读取txt文件无内容输出问题解答
问题复现
尝试读取txt文件时编写的初始代码:
file = open("LESEN.txt","r") print(file)
运行后未得到预期文件内容,控制台返回信息:
<built-in method read of _io.TextIOWrapper object at 0x0000024B969DA4D0>
问题原因
- 核心逻辑错误:
open()函数执行后返回的是文件操作对象,是Python封装的用于和系统文件交互的接口实例,本身不是文件存储的文本内容。直接打印这个对象,只会输出对象的类型、内存地址这类元信息,不可能得到文件内的文本。 - 从你贴的控制台输出判断,你实际运行的代码大概率漏写了
read方法的调用括号:如果是直接print(file),输出格式应为<_io.TextIOWrapper name='LESEN.txt' mode='r' encoding='xxx'>,不会提到read方法;只有写成print(file.read)时,才会打印出read方法本身的对象信息,和你贴的返回结果匹配。 - 不存在旧版本Python支持直接打印文件对象输出内容的逻辑,属于记忆偏差。
正确写法
基础修正版
手动打开文件后调用read()方法读取内容,操作完成后必须手动关闭文件释放资源:
# 建议显式指定编码,避免不同系统默认编码不一致导致乱码 file = open("LESEN.txt", "r", encoding="utf-8") # 加括号调用read()方法,拿到文件内容 content = file.read() print(content) # 必须手动关闭文件 file.close()
推荐写法(上下文管理器)
使用with关键字创建上下文管理器,代码块执行结束后会自动关闭文件,不需要手动调用close(),能避免忘记关文件导致的资源泄漏问题:
with open("LESEN.txt", "r", encoding="utf-8") as file: # 一次性读全部内容打印 content = file.read() print(content)
如果文件体积较大,不建议用read()一次性加载全部内容,可以逐行迭代读取,减少内存占用:
with open("LESEN.txt", "r", encoding="utf-8") as file: for line in file: # strip()用于去除行尾的换行符 print(line.strip())
内容的提问来源于stack exchange,提问作者Enno
相关产品推荐
相关产品推荐

