Python 写入文件

在 Python 中,写入文件有 2 种方式:一种是 “以覆盖方式写入文件”,另一种是 “以追加方式写入文件”。

以 “覆盖” 方式写入文件

在 Python 中,我们可以使用 File 对象的 write() 方法结合 'w' 模式,来以覆盖的方式写入文件。

语法:

# 第 1 步:打开文件,会自动关闭
with open(path, 'w', encoding='utf-8') as file:
    # 第 2 步:写入文件
    file.write(内容)

说明:

与读取文件一样,想要写入文件,首先需要使用 open() 函数打开一个文件,并且获取到 File 对象,接下来才可以写入文件。在 open() 函数中,'w' 表示以覆盖的方式写入文件。

为了测试后面的示例,接下来需要在 data 文件夹中创建一个 hi.txt,其中 hi.txt 的内容如下。

Hi, Python!

示例 1:“文件已存在时” 写入文件

mypath = 'data/hi.txt'

# 读取修改前的文件
with open(mypath, 'r', encoding='utf-8') as file:
    print('修改前:', file.read())

# 写入文件
with open(mypath, 'w', encoding='utf-8') as file:
    file.write('Hi, Java!')

# 读取修改后的文件
with open(mypath, 'r', encoding='utf-8') as file:
    print('修改后:', file.read())

运行结果如下。

修改前:Hi, Python!
修改后:Hi, Java!

分析:

当我们第 2 次读取文件时,发现文件的内容已经被修改了。或者直接打开 hi.txt 这个文件,也可以看到内容已经被修改了,是不是觉得非常神奇呢?

不管是读取文件还是写入文件,我们都需要使用 open() 函数。由于我们使用了强烈推荐的 with open(...) 语句,因此在缩进内的文件操作完成后,Python 会自动帮我们安全地关闭文件,而无需再手动调用 close() 方法!

示例 2:“文件不存在时” 写入文件

mypath = 'data/welcome.txt'

# 写入文件
with open(mypath, 'w', encoding='utf-8') as file:
    file.write('欢迎来到绿叶网!')

# 读取文件
with open(mypath, 'r', encoding='utf-8') as file:
    print(file.read())

运行结果如下。

欢迎来到绿叶网!

分析:

welcome.txt 这个文件一开始是不存在的。对于写模式 'w',如果文件不存在,则 Python 会创建一个文件,并且把内容写入新创建的文件中。

以 “追加” 方式写入文件

在 Python 中,我们可以使用 File 对象的 write() 方法结合 'a' 模式,来以追加的方式写入文件。

语法:

# 第 1 步:打开文件,会自动关闭
with open(path, 'a', encoding='utf-8') as file:
    # 第 2 步:写入文件
    file.write(内容)

说明:

这两种写入文件的方式,使用的都是 File 对象的 write() 方法,唯一的区别在于选取的模式不同,也就是 open() 函数的第 2 个参数不一样。其中,以覆盖方式写入文件使用的是 'w',而以追加方式写入文件使用的是 'a'。

对于文件操作,常见的操作模式如下表所示。

文件的操作模式
模式 说明
r 读纯文本文件
w 写纯文本文件
a 追加内容
rb 读二进制文件
wb 写二进制文件

r 指的是 “read(读)”,w 指的是 “write(写)”,a 指的是 “append(追加)”。

为了测试后面的示例,接下来需要在 data 文件夹中创建一个 book.txt,其中 book.txt 的内容如下。

绿叶网

示例 3:追加内容写入文件

mypath = 'data/book.txt'

# 读取修改前的文件
with open(mypath, 'r', encoding='utf-8') as file:
    print('修改前:', file.read())

# 写入文件
with open(mypath, 'a', encoding='utf-8') as file:
    file.write(' Python 教程')

# 读取修改后的文件
with open(mypath, 'r', encoding='utf-8') as file:
    print('修改后:', file.read())

运行结果如下。

修改前:绿叶网
修改后:绿叶网 Python 教程

分析:

book.txt 这个文件一开始的内容是 "绿叶网",然后以追加的方式写入文件后,内容就变为 “绿叶网 Python 教程” 了。

上一篇: Python 读取文件

下一篇: Python pathlib 模块

给站长反馈

绿叶网正在不断完善中,小伙伴们如果发现任何问题,还望多多给站长反馈,谢谢!

邮箱:lvyenet@vip.qq.com

「绿叶网」服务号
绿叶网服务号放大
关注服务号,微信也能看教程。
绿叶网服务号