在 Python 中,open() 函数的 mode 参数指定了文件的访问模式;
1. 访问模式列表
模式 | 类型 | 说明 |
---|---|---|
r/rt | 文本模式 | 以只读方式打开文件 |
w/wt | 文本模式 | 以写入方式打开文件 |
a/at | 文本模式 | 以追加方式打开文件 |
x/xt | 文本模式 | 以独占创建方式打开文件 |
rb | 二进制模式 | 以二进制只读方式打开文件 |
wb | 二进制模式 | 以二进制写入方式打开文件 |
ab | 二进制模式 | 以二进制追加方式打开文件 |
xb | 二进制模式 | 以二进制独占创建方式打开文件 |
r+ | 读写模式 | 以读写方式打开文件 |
w+ | 读写模式 | 以读写方式打开文件 |
a+ | 读写模式 | 以追加读写方式打开文件 |
x+ | 读写模式 | 以独占创建读写方式打开文件 |
rb+ | 二进制读写模式 | 以二进制读写方式打开文件 |
wb+ | 二进制读写模式 | 以二进制读写方式打开文件 |
ab+ | 二进制读写模式 | 以二进制追加读写方式打开文件 |
xb+ | 二进制读写模式 | 以二进制独占创建读写方式打开文件 |
2. r和rt的区别
文本模式是默认的模式,当你使用 'r' 模式时,它默认就是以文本模式打开文件。 而 'rt' 中的 't' 代表文本模式(Text mode),不过因为文本模式是默认的,所以 'r' 和 'rt' 是等效的。
所以在实际编码时,通常使用 'r' 模式即可,无需额外加上 't'。 只有在需要明确区分文本模式和二进制模式('b')时,才会显式地写出 't',不过这种情况并不常见。
3. 独占创建模式
3.1. 基本概念
独占创建模式的核心特点是:当你尝试以这种模式打开一个文件时,如果指定的文件已经存在, Python 会抛出 FileExistsError 异常; 只有当文件不存在时,才会创建新文件并打开它进行后续操作。
3.2. 使用场景
数据安全:
在需要确保不会意外覆盖已有文件的场景下非常有用。 例如,在批量生成配置文件时,为了避免误操作覆盖已有的重要配置, 使用独占创建模式可以保证每个新生成的文件都是唯一的。并发环境:
在多线程或多进程环境中,多个任务可能同时尝试创建文件。 使用独占创建模式可以避免多个任务同时创建同一个文件而导致的数据冲突问题。