Python 文件模式详解

在使用 Python 处理文件时,文件模式告诉我们要对文件执行什么样的操作(读取、写入等)。我们通过将模式作为 open() 函数的第二个参数来指定它。

Python 中的不同文件模式

下面是 Python 中不同类型的文件模式及其描述:

模式

描述

‘r’

只读。如果文件不存在,则引发 I/O 错误。

‘r+’

读写。如果文件不存在,则引发 I/O 错误。

‘w’

只写。如果文件存在则覆盖,否则创建新文件。

‘w+’

读写。覆盖文件或创建新文件。

‘a’

仅追加。在文件末尾添加数据。如果文件不存在则创建。

‘a+’

读和追加。指针位于末尾。如果文件不存在则创建。

‘rb’

以二进制模式读取。文件必须存在。

‘rb+’

以二进制模式读写。文件必须存在。

‘wb’

以二进制模式写入。覆盖或创建新文件。

‘wb+’

以二进制模式读写。覆盖或创建新文件。

‘ab’

以二进制模式追加。如果文件不存在则创建。

‘ab+’

以二进制模式读和追加。如果文件不存在则创建。## 常见模式示例

假设我们有一个名为 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 将包含该字符串。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。如需转载,请注明文章出处豆丁博客和来源网址。https://shluqu.cn/43370.html
点赞
0.00 平均评分 (0% 分数) - 0