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

Python文件打开模式r+与w+的差异及访问方式疑问解析

Python文件打开模式:r+与w+的核心区别

先快速回顾下open()函数常用几种模式的基础逻辑:

  • r:只读,文件必须存在,否则报错
  • w:只写,文件不存在则创建,存在则清空原有内容
  • a:追加写,文件不存在则创建,写入始终从文件末尾开始
  • r+:读写权限组合
  • w+:写读权限组合
  • a+:追加读写权限组合

你的核心疑问——r+和w+的操作差异,主要集中在这几点:

1. 文件存在时的初始处理

  • r+模式:打开已存在的文件时,不会清空原有内容,文件指针默认停在文件开头。你可以直接读取全部内容,也能从开头位置开始写入(会覆盖对应长度的原有内容)。
    实际例子:假设test.txt原有内容是Hello World

    with open('test.txt', 'r+') as f:
        print(f.read())  # 输出:Hello World
        f.write('Python')  # 从开头写入,覆盖前6个字符
        f.seek(0)  # 指针移回开头
        print(f.read())  # 输出:Python World
    
  • w+模式:不管文件之前有没有内容,打开时都会直接清空所有原有内容;如果文件不存在,就自动创建新的空文件。文件指针同样默认在开头,但此时文件是空的,直接读会得到空字符串。
    还是用上面的test.txt测试:

    with open('test.txt', 'w+') as f:
        print(f.read())  # 输出空字符串(文件已被清空)
        f.write('Python')
        f.seek(0)
        print(f.read())  # 输出:Python
    

2. 文件不存在时的报错逻辑

  • r+:如果目标文件不存在,直接抛出FileNotFoundError,不会创建新文件。
  • w+:如果目标文件不存在,会自动创建一个全新的空文件,不会报错。

3. 读写操作的后续影响

两者都支持读写,但因为初始文件状态不同,后续操作的结果天差地别。比如用r+时,你可以先读取原有内容再修改;而w+打开后,原有内容已经被清空,只能从空白状态开始写入和读取。

至于你提到的“读写模式”和“写读模式”,其实只是权限组合的表述差异,核心不是操作顺序,而是打开文件时对原有内容的处理规则和文件存在性要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 22:55:16