Python先写后读文本文件的实现及r+模式失效问题咨询
Python文件读写:先写后读无输出的问题解决
首先明确问题根源:文件操作的指针位置导致了两种代码的差异。
- 用
r+模式打开文件时,初始指针在文件开头。执行f.write()后,指针会移动到写入内容的末尾。此时直接调用f.read(),会从当前指针位置往后读取——如果文件原本没有后续内容,自然读不到任何输出。 - 先执行
f.read()的话,指针会移动到文件末尾,后续的f.write()是在末尾追加内容,所以能正常写入。
不存在无需调整指针就能直接让先写后读代码生效的打开模式,但可以通过手动移动指针解决问题:
方案1:使用r+模式,写完后重置指针
修改代码,在写入后调用f.seek(0)将指针移回文件开头,再执行读取:
with open("c.txt","r+") as f: f.write("Happy Birthday\n") f.seek(0) # 移动文件指针到起始位置 print(f.read())
方案2:使用a+模式,写完后重置指针
a+模式默认指针在文件末尾,写入后同样需要移动指针到开头才能读取全部内容:
with open("c.txt","a+") as f: f.write("Happy Birthday\n") f.seek(0) print(f.read())
关键提醒:不管用r+还是a+,读写操作都会改变指针位置,想要读取指定位置的内容,必须手动通过seek()调整指针。
内容的提问来源于stack exchange,提问作者Harsh
相关产品推荐
相关产品推荐

