知识点
Python文件打开模式
定义
Python的open使用模式字符串指定打开方式。以下基础模式互斥:
| 模式 | 文件已存在 | 文件不存在 |
|---|---|---|
r | 打开供读取 | 抛出异常 |
w | 打开时截断,供写入 | 创建文件 |
a | 写入追加到末尾 | 创建文件 |
x | 抛出异常,不覆盖 | 独占创建 |
+ 增加读写能力;b指二进制模式,t指文本模式,二者互斥。文本模式处理字符串与编码,二进制模式处理字节。模式决定请求的操作,实际能否打开仍取决于路径、权限等条件。
r+ 不会创建缺失文件;w+ 可以读写,但打开现有文件时仍会截断。a+ 支持读取和追加写入,写入仍发生在文件末尾;读取前按需要调整文件位置。
交互探索
选择文件状态和基础模式,比较打开时创建、截断、追加或报错的行为。演示只模拟规则。
打开模式会怎样影响文件?
比较Python基础模式在文件存在与不存在时的结果。
正在准备演示…
题集
练习
以
"w"打开一个已有内容的文件,还没写入任何数据就关闭。文件内容如何?
参考解答
截断发生在打开时,不在第一次写入时;没有写入也不会恢复原内容。
此时文件长度是 字节。
参考解答
"w"打开后文件被截断为0字节。
在Python中,文件不存在时,下列哪些模式会创建文件?
参考解答
"r"和"r+"要求文件已经存在;"w"、"a"、"x"在文件不存在时都会创建,区别在于已有文件时是清空、追加还是报错。以
"a+"打开文件后,读写位置如何?参考解答
"a+"增加的是读取能力;写入位置始终在文件末尾,读取位置可以自己移动。以
"x"打开一个已存在的文件会怎样?参考解答
"x"的语义是“只在不存在时创建”,已有文件时抛出FileExistsError,因此不会破坏原文件。