news 2026/7/2 0:04:14

python中read()、readline()、readlines()的区别

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
python中read()、readline()、readlines()的区别

一、核心区别总览

先通过表格直观对比三者的核心特征:

方法读取方式返回值类型核心特点
read()读取文件全部内容(或指定字节数)字符串(str)一次性加载全部内容,适合小文件
readline()读取一行内容字符串(str)逐行读取,指针下移,适合大文件逐行处理
readlines()读取全部内容并按行分割列表(list)一次性加载所有行到列表,每行是一个字符串

二、逐个详解(附代码示例)

为了方便演示,先准备一个测试文件test.txt,内容如下:

plaintext

Python文件读取测试 read()、readline()、readlines()的区别 学习Python文件操作
1. read ():读取全部内容(返回字符串)
  • 功能:默认读取文件的所有内容,返回一个完整的字符串;也可以传入整数参数size,指定读取的字节数。
  • 代码示例

python

# 打开文件(使用with语句自动关闭文件,推荐写法) with open("test.txt", "r", encoding="utf-8") as f: # 读取全部内容 content = f.read() print("read()返回结果:") print(content) print("返回值类型:", type(content)) # <class 'str'> # 可选:指定读取字节数(示例读取前10个字节) with open("test.txt", "r", encoding="utf-8") as f: partial_content = f.read(10) print("\nread(10)返回结果:") print(partial_content)
  • 输出结果

plaintext

read()返回结果: Python文件读取测试 read()、readline()、readlines()的区别 学习Python文件操作 返回值类型: <class 'str'> read(10)返回结果: Python文件读取测
  • 特点:一次性读取所有内容,文件指针会移动到文件末尾;如果文件过大(如 GB 级),会占用大量内存,容易导致程序卡顿。
2. readline ():逐行读取(返回字符串)
  • 功能:每次只读取一行内容,返回这一行的字符串(包含行尾的换行符\n);多次调用会逐行读取,直到文件末尾返回空字符串。
  • 代码示例

python

# 方式1:单次调用readline() with open("test.txt", "r", encoding="utf-8") as f: line1 = f.readline() line2 = f.readline() line3 = f.readline() line4 = f.readline() # 文件末尾,返回空字符串 print("readline()逐行读取:") print("第一行:", line1.strip()) # strip()去掉换行符 print("第二行:", line2.strip()) print("第三行:", line3.strip()) print("第四行(末尾):", repr(line4)) # repr显示空字符串 print("返回值类型:", type(line1)) # <class 'str'> # 方式2:循环逐行读取(处理大文件的最佳方式) print("\n循环读取所有行:") with open("test.txt", "r", encoding="utf-8") as f: while True: line = f.readline() if not line: # 读到末尾,空字符串为False break print(line.strip())
  • 输出结果

plaintext

readline()逐行读取: 第一行: Python文件读取测试 第二行: read()、readline()、readlines()的区别 第三行: 学习Python文件操作 第四行(末尾): '' 返回值类型: <class 'str'> 循环读取所有行: Python文件读取测试 read()、readline()、readlines()的区别 学习Python文件操作
  • 特点:每次只加载一行内容到内存,适合读取超大文件(如日志文件、数据文件),不会占用过多内存;读取后文件指针会移动到下一行开头。
3. readlines ():读取全部行(返回列表)
  • 功能:读取文件的所有内容,按行分割成一个列表,列表中的每个元素是一行字符串(包含行尾的\n);也可以传入整数参数hint,指定读取的字节数(按行截取,确保返回完整的行)。
  • 代码示例

python

# 读取所有行到列表 with open("test.txt", "r", encoding="utf-8") as f: lines = f.readlines() print("readlines()返回结果:") print(lines) print("返回值类型:", type(lines)) # <class 'list'> # 遍历列表处理每行内容 print("\n遍历readlines()结果:") for line in lines: print(line.strip()) # 可选:指定hint参数(示例读取前20个字节对应的完整行) with open("test.txt", "r", encoding="utf-8") as f: partial_lines = f.readlines(20) print("\nreadlines(20)返回结果:") print(partial_lines)
  • 输出结果

plaintext

readlines()返回结果: ['Python文件读取测试\n', 'read()、readline()、readlines()的区别\n', '学习Python文件操作'] 返回值类型: <class 'list'> 遍历readlines()结果: Python文件读取测试 read()、readline()、readlines()的区别 学习Python文件操作 readlines(20)返回结果: ['Python文件读取测试\n', 'read()、readline()、readlines()的区别\n']
  • 特点:一次性加载所有行到列表,方便通过索引访问指定行;但和read()一样,不适合超大文件,会占用大量内存。

三、补充:更优雅的逐行读取方式

除了readline(),Python 还支持直接遍历文件对象(底层也是逐行读取),代码更简洁,是处理大文件的推荐写法:

python

with open("test.txt", "r", encoding="utf-8") as f: for line in f: # 等价于逐行调用readline() print(line.strip())

总结

  1. read():一次性读全部内容,返回字符串,适合小文件快速读取所有内容;
  2. readline():逐行读取,返回字符串,适合超大文件(低内存占用),需循环调用;
  3. readlines():一次性读全部内容并按行转列表,返回列表,适合小文件需要按行索引的场景。

核心选择原则:小文件用read()/readlines(),大文件用readline()或直接遍历文件对象。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/22 11:44:17

Filter 的加载机制 和 Servlet 容器(如 Tomcat)的请求处理流程

Spring Boot 中 Filter 的加载机制 和 Servlet 容器&#xff08;如 Tomcat&#xff09;的请求处理流程。下面我来系统性地解释为什么请求会先经过 AuthFilter&#xff0c;以及整个流程背后的原理。一、请求处理的基本流程&#xff08;Servlet 规范&#xff09;在基于 Servlet 的…

作者头像 李华
网站建设 2026/6/29 2:45:11

英文音频也能处理?HeyGem多语言支持情况调查

英文音频也能处理&#xff1f;HeyGem多语言支持情况调查 在AI内容创作日益普及的今天&#xff0c;企业对高效、低成本生成高质量视频的需求正以前所未有的速度增长。尤其在跨国业务场景中&#xff0c;如何让一个“中国面孔”的讲师自然地说出流利的英文讲解&#xff0c;而不是依…

作者头像 李华
网站建设 2026/6/23 9:42:13

【收藏必看】一文搞懂工作流与智能体的本质区别,避免AI转型踩坑

很多朋友把工作流误认为智能体&#xff0c;今天就来专门聊聊他们的区别&#xff0c;你是否经常听到这样的宣传&#xff1a;“用AI智能体自动化你的工作”&#xff1f;但是当你真正使用时&#xff0c;却发现效果并不理想&#xff1f;问题很可能在于——你错把工作流当成了智能体…

作者头像 李华
网站建设 2026/6/30 23:25:50

Stable Diffusion生成背景图:与HeyGem数字人融合创意实验

Stable Diffusion生成背景图&#xff1a;与HeyGem数字人融合创意实验 在短视频内容井喷的今天&#xff0c;企业对高质量数字人视频的需求早已从“能说话”升级为“会表达”。一个只会口型同步、站在纯色绿幕前播报的虚拟主播&#xff0c;已经难以满足品牌传播的专业要求。真正打…

作者头像 李华
网站建设 2026/6/25 15:58:18

前Meta科学家揭秘大模型推理与可解释性,助你快速掌握AI核心技术!

简介 前Meta AI科学家田渊栋分享职业转变经历&#xff0c;深入探讨大模型推理优化技术&#xff08;连续隐空间推理、Token Assorted等&#xff09;及可解释性研究的重要性。他认为无论Scaling路径是否成功&#xff0c;理解AI黑箱对确保AI安全和推动技术发展都至关重要&#xf…

作者头像 李华