You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 00:46:09