文件r+模式读写问题:写入未按指针位置覆盖
问题解答
首先明确r+模式的核心行为:它是读写双模式,文件指针初始在文件开头,读写操作共用同一个指针位置。正常情况下,你执行read(3)后,指针会停在第3个字符后面(也就是111之后),此时写qq应该会覆盖后面的22,最终文件内容变成111qq22333。
你看到qq被追加到末尾,大概率是这几个原因:
- 缓冲未及时刷新:如果代码没写
file.close()或file.flush(),写入的内容会暂存在内存缓冲里,此时查看文件还是原内容;等程序退出自动刷新缓冲时,某些系统环境下可能出现指针意外跳到文件末尾的情况,导致内容被追加。 - Windows文本模式的换行符干扰:Windows下文本模式(
r+默认是rt+)会自动把\n转成\r\n,如果你的文件里藏着换行符(哪怕你没注意到),会导致指针位置计算出错,最终写到文件末尾。 - 其他进程干扰:如果运行代码时,有别的程序也在操作这个文件,可能打乱指针位置。
如果要确保写入到指定位置,直接显式用seek()定位指针就行,比如:
file = open("import_.text", mode='r+') print(file.read(3)) file.seek(3) # 强制把指针拉到第3个字符后的位置 file.write("qq") file.close()
内容的提问来源于stack exchange,提问作者fang dd
相关产品推荐
相关产品推荐

