Python写入文件后读不出来,主要是因未关闭文件、未重置指针或读写模式不匹配;应使用r+模式并seek(0),或分开写读操作,同时统一指定encoding='utf-8'并确保换行符正确。

Python写入文件后读不出来,通常不是语法问题,而是因为没正确关闭文件、没重置文件指针,或读写模式不匹配。关键在于理解“写完立刻读”需要手动控制文件位置或重新打开。
写完马上读:用 r+ 模式并重置指针
如果想在同一个文件对象中先写后读,得用可读可写模式(r+ 或 w+),且写完必须调用 seek(0) 把指针移回开头,否则 read() 会从末尾开始读,得到空结果。
示例:
技术上面应用了三层结构,AJAX框架,URL重写等基础的开发。并用了动软的代码生成器及数据访问类,加进了一些自己用到的小功能,算是整理了一些自己的操作类。系统设计上面说不出用什么模式,大体设计是后台分两级分类,设置好一级之后,再设置二级并选择栏目类型,如内容,列表,上传文件,新窗口等。这样就可以生成无限多个二级分类,也就是网站栏目。对于扩展性来说,如果有新的需求可以直接加一个栏目类型并新加功能操作
with open('test.txt', 'w+') as f:
f.write('Hello World')
f.seek(0) # 必须加这句!
content = f.read()
print(content) # 输出:Hello World更稳妥的做法:分开写和读两个操作
多数情况下,推荐写完就关闭,再单独打开读取。这样逻辑清晰、不易出错,也符合常见使用习惯。
立即学习“Python免费学习笔记(深入)”;
示例:
# 先写
with open('test.txt', 'w') as f:
f.write('Python is great')
再读(自动关闭前一个,新开一个)
with open('test.txt', 'r') as f:
content = f.read()
print(content) # 输出:Python is great
注意编码和换行符的影响
中文乱码?读不到内容?大概率是编码不一致。写和读都显式指定 encoding='utf-8',尤其处理中文时。
另外,write() 不自动加换行,print(..., file=f) 会加,但 readline() 依赖换行符。如需逐行读,确保写入时包含 \n。
- 统一加编码:
open('x.txt', 'w', encoding='utf-8') - 写多行:用
f.write('a\nb\nc')或循环中f.write(line + '\n') - 读所有行:
f.readlines()或遍历for line in f:
检查文件是否真的写进去了
有时看似写了,实际没落盘——比如用了 write() 但忘了 close() 或 flush()。用 with 语句最安全;若不用,记得手动 f.flush() 强制写入磁盘。
还可以用 os.path.getsize('test.txt') 确认文件大小非零,排除空写入可能。










