Python 文件打开模式总结

若指定的文件不存在,则以哪种方法打开文件会报异常。( )
A.a
B.a+
C.r+
D.w+

模式完整写法文件不存在时文件已存在时写入位置读/写权限对原内容的处理
ropen('file', 'r')报错FileNotFoundError正常打开文件开头只读保留原内容
r+open('file', 'r+')报错FileNotFoundError正常打开文件开头读写保留原内容
wopen('file', 'w')创建新文件正常打开文件开头只写清空原内容
w+open('file', 'w+')创建新文件正常打开文件开头读写清空原内容
aopen('file', 'a')创建新文件正常打开文件末尾只写保留原内容,追加写入
a+open('file', 'a+')创建新文件正常打开文件末尾读写保留原内容,追加写入
xopen('file', 'x')创建新文件报错FileExistsError文件开头只写不适用(报错,操作失败)
x+open('file', 'x+')创建新文件报错FileExistsError文件开头读写不适用(报错,操作失败)

快速分类速查表

① 按"文件不存在时"分类

行为模式
报错rr+
创建新文件ww+aa+xx+

② 按"文件已存在时"分类

行为模式
报错xx+
正常打开rr+ww+aa+

③ 按"写入位置"分类

写入位置模式
文件开头r+ww+xx+r不能写)
文件末尾(追加)aa+

④ 按"读/写权限"分类

权限模式
只读r
只写wax
读写r+w+a+x+

⑤ 按"对原内容的处理"分类(仅文件存在时有效)

处理方式模式
保留原内容rr+aa+
清空原内容ww+
不适用(直接报错)xx+

记忆口诀(帮你快速记住)

r 家族报错,w/a/x 家族创建
w 家族会清空,a 家族写末尾,r 家族读开头

  • r(read):读,不存在就报错

  • w(write):写,不存在就创建,存在就清空

  • a(append):追加,不存在就创建,存在就追加到末尾

  • x(exclusive):排他创建,不存在就创建,存在就报错

  • 加号+:表示同时具备读写能力

一图流总结(逻辑关系)

文件打开模式 │ ┌───────────────┼───────────────┐ │ │ │ r 家族 w 家族 x 家族 (不存在报错) (不存在创建) (存在就报错) │ │ │ r(只读) w(清空写) x(排他创建) r+(读写) w+(清空读写) x+(排他读写) │ a 家族 (不存在创建) │ a(追加写) a+(追加读写)