Python中r+与w+文件打开模式的区别是什么?
Python中
r+与w+文件打开模式的区别 核心差异点
文件存在性与原有内容处理
r+:仅能打开已存在的文件,若文件不存在直接抛出FileNotFoundError,原有内容不会被自动清空(除非主动写入覆盖)。w+:若文件不存在则自动创建新文件;若文件已存在,会完全清空原有内容,等同于生成一个空文件后再操作。
初始文件指针位置
- 两者打开后指针默认都在文件开头(偏移量0处),但
w+因清空了文件,此时文件长度为0。
- 两者打开后指针默认都在文件开头(偏移量0处),但
代码示例对比
1. 使用r+模式(文件已存在)
假设test.txt原有内容为:Hello World
with open('test.txt', 'r+') as f: f.write('Hi') # 从开头写入,覆盖前2个字符 f.seek(0) # 将指针移回文件开头 print(f.read()) # 输出结果: Hiello World
2. 使用w+模式(文件已存在)
同样针对原有内容为Hello World的test.txt:
with open('test.txt', 'w+') as f: f.write('Hi') f.seek(0) print(f.read()) # 输出结果: Hi
额外注意事项
- 使用
r+时,若直接执行读取操作,会从当前指针位置开始读;若写入后未移动指针,后续读取会从写入结束的位置开始。 - 使用
w+时,写入完成后指针会停在文件末尾,若要读取刚写入的内容,必须调用seek(0)将指针移回开头。
内容的提问来源于stack exchange,提问作者Rishika Arora
相关产品推荐
相关产品推荐

