跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Python

Python 文件读写操作

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

深海蔚蓝发布于 2026/3/25更新于 2026/9/1225K 浏览
Python 文件读写操作

1、文件的操作流程

操作一个文件需要经历以下几个流程:分别是打开文件、读取或写入文件、关闭文件。

2、文件的读取方式

2.1 如何打开一个文件呢?

打开文件我们使用到了 Python 中的 open 方法,其中 open 方法有以下几个参数:

  • 文件路径:我们要打开的文件的绝对路径
  • 操作类型:表示要对文件进行哪些操作,这里我们有读(r)、写(w)、追加(a)三种
    • 读(r):以字母 r 来表示,功能是只能读取文件,并不能对文件进行写入操作。
    • 写(w):以字母 w 来表示,读取并向文件中写入内容,但写入前会清空原有内容。
    • 追加(a):以字母 a 来表示,能够读取和写入,写入时不会清空内容,而是追加。
  • 编码格式:我们这里通常使用 utf-8 来进行编码,Python2 则使用的是 gbk 的格式
# 这里打开了一个名为 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() 方法将其关闭。

2.1.1 with 关键字简化打开文件方式

我们读取文件也可以通过 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)

2.2 read 方法读取文件内容

  • read 方法是基于 open 打开文件对象中的一个读取文件的方法。
  • 其功能为读取文件中的内容,默认是读取所有内容。
  • 通过 read(10) 方式可读取文件中的前 10 个字符(包括特殊字符)
2.2.1 read 读取所有内容

直接使用文件对象 f.read() 的方式,可实现读取文件中从头到尾所有内容。

# 打开一个文件
f = open("test.txt", "r", "utf-8")
# 读取并输出文件全部内容
print(f.read())
2.2.2 读取指定字符数量

这里通过 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 个字符开始向后读取内容,不会在读取前面的内容。

2.3 readlines() 读取所有内容,并将其每行存储为列表。

  • readlines 同样是内置的读取文件的方法,他与 read 都可以读取文件所有内容。
  • 不同的是 readlines 方法会将读取都的每一行内容存储为一个列表元素,最后返回一个列表。
# 打开文件步骤省略.....
print(f.readlines())
# 以下是文件原内容
# 我是 test.txt 文件,用来读取和写入操作
# 第二行测试内容
# 第三行示例文本
# 第四行结束标记
# 读取之后为 ['我是 test.txt 文件,用来读取和写入操作\n', '第二行测试内容\n', '第三行示例文本\n', '第四行结束标记']

2.4 readline 方法读取单行内容

此方法可用于读取单行的内容,因为一个 readline 他就只读取一行内容。

如果还想读取下一行,可多写几个 readline 或者使用循环来完成读取。

通过以下这个案例我们可以看到文件有四行内容,而我们读取输出了首行。

# 读取文件方式省略.....
print(f.readline())
# 以下是文件原内容
# 我是 test.txt 文件,用来读取和写入操作
# 第二行测试内容
# 第三行示例文本
# 第四行结束标记
# 读取之后输出
# 我是 test.txt 文件,用来读取和写入操作

3、文件的写入操作

  • 写入操作主要是使用操作方式中的 w 和 a 模式来实现。
  • w 表示写入,a 表示追加。
  • 这里新增了一个名为 f.flush() 的方法,作用是刷新文件内容,但现在此功能在 close 中已支持。

【小知识点】文件写入的流程:

  1. 调用 write 时,会将要写入的内容写入内存的缓冲区。
  2. 在执行 close 或者 flush 后,会强制将缓冲区的写入内容写入到文件中(也就是磁盘中存储)
  3. 不执行以上两个方法时,则系统会在缓冲区满后将内容写入文件。

3.1 w 写入模式下的 write 方法

在此模式下,write 方法会先清空文件中原内容,之后再将新的内容写入进去,每次都会清空原内容。

with open("test.txt", "w", encoding="utf-8") as f:
    f.write("hello,我是 w 模式下写入的内容")
    print(f.read())
# 以下是文件原内容
# 我是 test.txt 文件,用来读取和写入操作
# 第二行测试内容
# 写入后的文件内容(原内容已被 write 清空)
# hello,我是 w 模式下写入的内容

3.2 a 写入模式下的 write 方法

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 模式下写入的内容
3.2.1 【小案例】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()

4、总结

  • 学习了通过 open 方法打开文件操作,r 读取、w 清空写入、a 追加最后三种文件操作模式。
  • 通过 read(全部)、readline(单行)、readlines(多行列表)方法实现读取内容操作。
  • 通过 write 方法实现写入,flush 和 close 实现内容刷新和关闭文件操作。
  • 最后完成了一个在 a 模式下实现隔行写入内容的案例。

目录

  1. 1、文件的操作流程
  2. 2、文件的读取方式
  3. 2.1 如何打开一个文件呢?
  4. 这里打开了一个名为 test.txt 的文件,并且读取的编码为 UTF-8
  5. 关闭打开的文件
  6. 2.1.1 with 关键字简化打开文件方式
  7. 使用 with 方式读取文件,as f2 是起了别名,相当于变量,f2 可用于后续操作
  8. 有一点,使用了 with 后,我们则不用再写 close 方法,with 会在我们读取完毕文件后自动调用 close 方法关闭
  9. 2.2 read 方法读取文件内容
  10. 2.2.1 read 读取所有内容
  11. 打开一个文件
  12. 读取并输出文件全部内容
  13. 2.2.2 读取指定字符数量
  14. 2.3 readlines() 读取所有内容,并将其每行存储为列表。
  15. 打开文件步骤省略.....
  16. 以下是文件原内容
  17. 我是 test.txt 文件,用来读取和写入操作
  18. 第二行测试内容
  19. 第三行示例文本
  20. 第四行结束标记
  21. 读取之后为 ['我是 test.txt 文件,用来读取和写入操作\n', '第二行测试内容\n', '第三行示例文本\n', '第四行结束标记']
  22. 2.4 readline 方法读取单行内容
  23. 读取文件方式省略.....
  24. 以下是文件原内容
  25. 我是 test.txt 文件,用来读取和写入操作
  26. 第二行测试内容
  27. 第三行示例文本
  28. 第四行结束标记
  29. 读取之后输出
  30. 我是 test.txt 文件,用来读取和写入操作
  31. 3、文件的写入操作
  32. 3.1 w 写入模式下的 write 方法
  33. 以下是文件原内容
  34. 我是 test.txt 文件,用来读取和写入操作
  35. 第二行测试内容
  36. 写入后的文件内容(原内容已被 write 清空)
  37. hello,我是 w 模式下写入的内容
  38. 3.2 a 写入模式下的 write 方法
  39. 以下是文件原内容
  40. 我是 test.txt 文件,用来读取和写入操作
  41. 第二行测试内容
  42. 写入后的文件内容(原内容还在,新内容在最后一行内容后追加写入)
  43. 我是 test.txt 文件,用来读取和写入操作
  44. 第二行测试内容 hello,我是 a 模式下写入的内容
  45. 3.2.1 【小案例】a 模式实现文件的隔行写入
  46. 【案例】a 模式的隔行写入
  47. a 模式会将内容追加到文件内容最后一行内容的后面,不换行
  48. 4、总结

更多推荐文章

查看全部
  • AI 小白转型产品经理的七步实战指南
  • 基于 Spring Boot 与 Vue 框架的软考学习与交流系统设计
  • 期货交易基础:保证金制度与每日结算机制详解
  • QuantDinger 本地化私有量化交易系统架构设计与实现
  • BaseCTF Week3 Web & Misc 解题报告
  • Copilot Cowork 核心逻辑解析:使用 Kotlin 构建 AI Agent
  • AI Agent 开发工程师岗位解析与技能路径
  • Selenium 接管已启动浏览器以绕过反爬检测策略
  • Effective Modern C++ 条款 36:必要时指定 std::launch::async 策略
  • ORACLE EBS常用表及查询语句(最终整理版) .
  • AI 时代时序数据库进化论:选型逻辑已变
  • Web 安全实战:PHP 弱类型与正则替换漏洞分析
  • Claude 记忆插件、DeepAgents 和具身智能的最新动向
  • AI 智能体开发纲要:整合多亚专科医学知识(2025 版)
  • 飞牛 OS 部署 Gitea 私有代码仓库指南
  • Capacitor 跨平台 Web 原生应用开发及鸿蒙适配指南
  • 在安装sql server 2008时,安装程序配置检查RebootRequiredCheck时失败,问题解决方法
  • CarelessWhisper: 将非因果 Whisper 改造为因果流式模型
  • 部署OpenClaw(小龙虾):科研党专属AI智能体保姆级教程
  • DeepSeek 大模型在云平台的优化实践与应用落地

相关免费在线工具

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online