知识点

Python文件打开模式

定义

Python的open使用模式字符串指定打开方式。以下基础模式互斥:

模式文件已存在文件不存在
r打开供读取抛出异常
w打开时截断,供写入创建文件
a写入追加到末尾创建文件
x抛出异常,不覆盖独占创建

+ 增加读写能力;b指二进制模式,t指文本模式,二者互斥。文本模式处理字符串与编码,二进制模式处理字节。模式决定请求的操作,实际能否打开仍取决于路径、权限等条件。

r+ 不会创建缺失文件;w+ 可以读写,但打开现有文件时仍会截断。a+ 支持读取和追加写入,写入仍发生在文件末尾;读取前按需要调整文件位置。

交互探索

选择文件状态和基础模式,比较打开时创建、截断、追加或报错的行为。演示只模拟规则。

打开模式会怎样影响文件?

比较Python基础模式在文件存在与不存在时的结果。

正在准备演示…

题集

练习

  1. 以 "w" 打开一个已有内容的文件,还没写入任何数据就关闭。

    1. 文件内容如何?

      选择答案
      参考解答

      截断发生在打开时,不在第一次写入时;没有写入也不会恢复原内容。

    2. 此时文件长度是 字节。

      参考解答

      "w" 打开后文件被截断为0字节。

  2. 在Python中,文件不存在时,下列哪些模式会创建文件?

    题 create-missing · choice
    参考解答

    "r" 和 "r+" 要求文件已经存在;"w"、"a"、"x" 在文件不存在时都会创建,区别在于已有文件时是清空、追加还是报错。

  3. 以 "a+" 打开文件后,读写位置如何?

    选择答案
    参考解答

    "a+" 增加的是读取能力;写入位置始终在文件末尾,读取位置可以自己移动。

  4. 以 "x" 打开一个已存在的文件会怎样?

    选择答案
    参考解答

    "x" 的语义是“只在不存在时创建”,已有文件时抛出FileExistsError,因此不会破坏原文件。