在使用 Python 处理文件时,文件模式告诉我们要对文件执行什么样的操作(读取、写入等)。我们通过将模式作为 open() 函数的第二个参数来指定它。
Python 中的不同文件模式
下面是 Python 中不同类型的文件模式及其描述:
描述
—
只读。如果文件不存在,则引发 I/O 错误。
读写。如果文件不存在,则引发 I/O 错误。
只写。如果文件存在则覆盖,否则创建新文件。
读写。覆盖文件或创建新文件。
仅追加。在文件末尾添加数据。如果文件不存在则创建。
读和追加。指针位于末尾。如果文件不存在则创建。
以二进制模式读取。文件必须存在。
以二进制模式读写。文件必须存在。
以二进制模式写入。覆盖或创建新文件。
以二进制模式读写。覆盖或创建新文件。
以二进制模式追加。如果文件不存在则创建。
以二进制模式读和追加。如果文件不存在则创建。## 常见模式示例
假设我们有一个名为 example.txt 的文件,内容为:
> Hello Geeks
我们将在下面的示例中使用这个文件。
1. 只读模式 (‘r‘)
该模式允许我们打开文件仅进行读取。如果文件不存在,将会引发 FileNotFoundError。
示例: 在此示例中,我们以只读模式 (‘r‘) 打开名为 ‘example.txt‘ 的文件,并使用 ‘with‘ 语句读取其内容并存储在变量 ‘content‘ 中,这确保了通过在使用后自动关闭文件来实现适当的资源管理。
Python
CODEBLOCK_e953eb2b
输出:
> Hello Geeks
2. 只写模式 (‘w‘)
打开文件仅用于写入。如果文件存在,其内容将被删除。如果不存在,则创建一个新文件。
示例: 在此示例中,我们以写入模式 (‘w‘) 打开名为 ‘example.txt‘ 的文件,并将字符串 ‘Hello, world!‘ 写入文件。
Python
CODEBLOCK_9aaa4ddf
输出 (写入后的文件内容):
> Hello, world!
> 注意: 如果您在运行此代码后打开文件 "example.txt",您会发现它包含文本 "Hello, world!",因为之前的内容 "Hello Geeks" 将被删除。
3. 追加模式 (‘a‘)
打开文件以在末尾添加内容而不删除现有数据。如果文件不存在,它会创建一个新文件。
示例: 在此示例中,我们以追加模式 (‘a‘) 打开名为 ‘example.txt‘ 的文件,并将字符串 ‘
This is a new line.‘ 写入文件末尾。
Python
CODEBLOCK_d323c8d0
输出:
> Hello, World!
> This is a new line
然后,代码会将字符串 "
This is a new line." 写入文件,将其追加到现有内容之后,或者如果文件为空则创建一个新行。
4. 二进制模式 (‘b‘)
用于非文本文件,如图像或音频。始终与 ‘r‘、‘w‘ 或 ‘a‘ 结合使用。
示例: 在此示例中,我们以二进制读取模式 (‘rb‘) 打开名为 ‘image.png‘ 的文件。使用 ‘read()‘ 方法从文件中读取二进制数据并存储在变量 ‘data‘ 中。
Python
CODEBLOCK_fb20ee08
5. 读写模式 (‘r+‘)
打开文件以进行读取和写入。从文件开头开始。如果文件不存在,则引发 FileNotFoundError。
Python
CODEBLOCK_2f184ded
输出: 如果 "example.txt" 的初始内容是:
> Hello, World!
> This is a new line
运行代码后,文件的新内容将是:
> This is a new line
> Hello, World!
> This is a new line
6. 写读模式 (‘w+‘)
该模式允许我们打开文件以进行读取和写入。如果文件已存在,它会将文件截断为零长度。如果文件不存在,它将创建一个新文件。
示例: 在此示例中,我们以写入和读取模式 (‘w+‘) 打开名为 ‘example.txt‘ 的文件。
Python
CODEBLOCK_1d644381
输出:
> Hello, world!
解释: 此代码的输出是 "Hello, world!"。由于文件被截断并且指针在读取前移动到了开头,因此文件的内容将完全是我们写入的内容。所以,content 将包含该字符串。