Python 文件打开模式总结

若指定的文件不存在,则以哪种方法打开文件会报异常。( )

A.a

B.a+

C.r+

D.w+

模式 完整写法 文件不存在时 文件已存在时 写入位置 读/写权限 对原内容的处理
r open('file', 'r') 报错 FileNotFoundError 正常打开 文件开头 只读 保留原内容
r+ open('file', 'r+') 报错 FileNotFoundError 正常打开 文件开头 读写 保留原内容
w open('file', 'w') 创建新文件 正常打开 文件开头 只写 清空原内容
w+ open('file', 'w+') 创建新文件 正常打开 文件开头 读写 清空原内容
a open('file', 'a') 创建新文件 正常打开 文件末尾 只写 保留原内容,追加写入
a+ open('file', 'a+') 创建新文件 正常打开 文件末尾 读写 保留原内容,追加写入
x open('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+(追加读写)