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

为何Python中r+模式读写混合不符合预期,rb+模式却正常?

文本与二进制模式下文件读写的差异疑问

Python中以文本模式读取文件时,数据会被加载到缓冲区中,这意味着在读写切换时必须执行seek操作才能正确写入内容。

假设目标文件test.txt的初始内容为:

Hi, I'm a text file!
I got a text file here.

文本模式下的读写操作

如果要读取第一行后替换第二行内容,必须在写入前执行seek操作才能确保写入位置正确:

import os
with open("test.txt", "r+") as f:
    print(f.readline().strip())
    print('Replacing bytes at position', f.tell())
    f.seek(0, os.SEEK_CUR)
    f.write('I had')

二进制模式下的读写操作

但如果以二进制模式打开文件,无需执行seek就能正常完成写入:

with open("test.txt", "rb+") as f:
    print(f.readline().strip())
    print('Replacing bytes at position', f.tell())
    f.write(b'I had')

核心疑问

  • 二进制模式下无需seek即可正常工作的情况是否符合预期?
  • 后续在进行更多读写操作或处理大文件时,是否会出现潜在问题?
  • 为何二进制模式不需要seek就能正确完成读写切换?

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.02 03:47:30