Python调用readlines()读取文件为空,使用seek(0)仍不生效问题求助
问题原因分析
- 多余操作:以只读模式刚打开文件时,文件指针默认位于文件起始位置,你新增的
file.seek(0)没有实际作用,不是导致输出空白的原因。 - 核心语法错误:for循环遍历逻辑有误,你遍历的是
lines列表中的每一行元素line,但打印的却是整个lines列表。如果是在单次运行环境中重复执行读取逻辑,首次读取完成后文件指针移动到末尾,后续再执行readlines()就会返回空列表,打印结果就是空白。 - 潜在编码问题:打开文件时未指定编码,当系统默认编码和
test.txt的文件编码不匹配时,也可能出现读取内容为空的情况。
修复方案
- 修正for循环内的打印对象,将
print(lines)改为print(line)。 - 优先使用上下文管理器
with语句操作文件,会自动处理文件关闭、指针重置逻辑,避免手动操作出错。 - 打开文件时明确指定编码参数,避免编码不匹配问题。
修正后代码示例
# with语句会在代码块运行结束后自动关闭文件,无需手动调用close() with open('test.txt', 'r', encoding='utf-8') as file: lines = file.readlines() for line in lines: # 打印当前遍历到的单行内容,strip()可去除行尾多余的换行符 print(line.strip())
内容的提问来源于stack exchange,提问作者Kingofweirdos
相关产品推荐
相关产品推荐

