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

Python3中r+模式的文件指针与读写位置疑问

Python3 文件打开模式 r+ 细节解析

首先看你给出的r+模式英文说明的中文翻译:

r+
打开文件以进行读写操作。文件指针位于文件开头。

原表述的遗漏点

这份说明遗漏了几个关键细节:

  • 文件必须已存在:使用r+模式时,若目标文件不存在,Python会抛出FileNotFoundError,不会自动创建新文件(这是和w+模式的核心区别之一)。
  • 写入为覆盖式操作:写入不会默认追加到文件末尾,而是从当前文件指针位置开始覆盖原有内容。
  • 读写共享同一指针:读取和写入共用同一个文件指针,执行读取后指针会停在读取结束的位置,后续写入将从该位置开始,不会自动重置。

读写位置的疑问解答

你的认知有误:r+模式下写入操作默认不在文件末尾执行。初始状态下文件指针在开头,此时写入会直接覆盖文件开头的内容;读取操作确实从初始的文件开头位置开始,但指针会随读取操作移动。

举个实际例子验证:
假设test.txt原有内容为Hello World

with open('test.txt', 'r+') as f:
    # 初始指针在开头,读取前5个字符
    print(f.read(5))  # 输出: Hello
    # 此时指针位于第5个字符后,写入内容会覆盖后续字符
    f.write('Python')

执行后文件内容变为HelloPython,既不是追加到末尾的Hello WorldPython,也不是替换开头的Python World。如果需要在末尾写入,需先执行f.seek(0, 2)将指针移动到文件末尾。

内容的提问来源于stack exchange,提问作者DCR

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 14:42:43