1、文件的操作流程
操作一个文件需要经历以下几个流程:分别是打开文件、读取或写入文件、关闭文件。
Python 文件操作的基本流程,包括打开、读取和关闭文件。详细讲解了 open 函数的参数(路径、模式 r/w/a、编码),以及使用 with 关键字自动管理资源。涵盖了三种读取方法:read() 读取全部或指定字符数,readlines() 按行返回列表,readline() 读取单行。同时说明了写入模式 w(清空覆盖)和 a(追加)的区别,以及 write() 方法和 flush()/close() 的作用。最后通过案例演示了如何在追加模式下实现隔行写入。

操作一个文件需要经历以下几个流程:分别是打开文件、读取或写入文件、关闭文件。
打开文件我们使用到了 Python 中的 open 方法,其中 open 方法有以下几个参数:
# 这里打开了一个名为 test.txt 的文件,并且读取的编码为 UTF-8
f = open("test.txt", "r", encoding="UTF-8")
print(type(f)) # 打印类型:<class '_io.TextIOWrapper'>
print(f) # <_io.TextIOWrapper name='test.txt' mode='r' encoding='UTF-8'>
# 关闭打开的文件
f.close()
【小提示】在文件打开完毕之后要使用 close() 方法将其关闭。
我们读取文件也可以通过 with 关键字进行简化。
# 使用 with 方式读取文件,as f2 是起了别名,相当于变量,f2 可用于后续操作
# 有一点,使用了 with 后,我们则不用再写 close 方法,with 会在我们读取完毕文件后自动调用 close 方法关闭
with open("test.txt", "r", encoding="UTF-8") as f2:
for i in f2:
print(i)
直接使用文件对象 f.read() 的方式,可实现读取文件中从头到尾所有内容。
# 打开一个文件
f = open("test.txt", "r", "utf-8")
# 读取并输出文件全部内容
print(f.read())
这里通过 read(参数) 的形式实现传参读取文件中从头开始的指定数量的字符,比如我使用了 read(15),则表示要读取文件中前 15 个字符(包括特殊字符回车、换行、空格等)
f = open("test.txt", "r", "utf-8")
print(f.read(10)) # 文件原内容:我是 test.txt 文件,用来读取和写入操作
# 读取前 10 个字符:我是 test.txt 文件
【小知识点】这里 read 方法有一个特殊的读取方式,如果我们基于此文件打开对象调用了两次或多次 read 方法,则第二次读取会接着上次读取到的文件内容位置而向下继续读取。
例如:read(10):这个就表示他读取了文件中前十个字符(包括特殊符号在内的),那么我们在执行 read 时,他就会从文件中第 11 个字符开始向后读取内容,不会在读取前面的内容。
# 打开文件步骤省略.....
print(f.readlines())
# 以下是文件原内容
# 我是 test.txt 文件,用来读取和写入操作
# 第二行测试内容
# 第三行示例文本
# 第四行结束标记
# 读取之后为 ['我是 test.txt 文件,用来读取和写入操作\n', '第二行测试内容\n', '第三行示例文本\n', '第四行结束标记']
此方法可用于读取单行的内容,因为一个 readline 他就只读取一行内容。
如果还想读取下一行,可多写几个 readline 或者使用循环来完成读取。
通过以下这个案例我们可以看到文件有四行内容,而我们读取输出了首行。
# 读取文件方式省略.....
print(f.readline())
# 以下是文件原内容
# 我是 test.txt 文件,用来读取和写入操作
# 第二行测试内容
# 第三行示例文本
# 第四行结束标记
# 读取之后输出
# 我是 test.txt 文件,用来读取和写入操作
【小知识点】文件写入的流程:
在此模式下,write 方法会先清空文件中原内容,之后再将新的内容写入进去,每次都会清空原内容。
with open("test.txt", "w", encoding="utf-8") as f:
f.write("hello,我是 w 模式下写入的内容")
print(f.read())
# 以下是文件原内容
# 我是 test.txt 文件,用来读取和写入操作
# 第二行测试内容
# 写入后的文件内容(原内容已被 write 清空)
# hello,我是 w 模式下写入的内容
a 模式下,write 不执行清空文件操作,而是会在内容后直接去将内容追加写入(不会自动换行)。
with open("test.txt", "a", encoding="utf-8") as f:
f.write("hello,我是 a 模式下写入的内容")
print(f.read())
# 以下是文件原内容
# 我是 test.txt 文件,用来读取和写入操作
# 第二行测试内容
# 写入后的文件内容(原内容还在,新内容在最后一行内容后追加写入)
# 我是 test.txt 文件,用来读取和写入操作
# 第二行测试内容 hello,我是 a 模式下写入的内容
实现在写入时,第 1、3、5 等奇数行写入内容,偶数则执行换行操作。
# 【案例】a 模式的隔行写入
filedir = "test.txt"
f2 = open(filedir, "a", encoding="UTF-8")
# a 模式会将内容追加到文件内容最后一行内容的后面,不换行
i = 0
while i < 10:
f2.write(f"\n我来试一下换行写入的功能{i}")
i += 1
f2.flush()
f2.close()

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online
通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online