news 2026/4/18 10:13:28

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/4/16 10:40:29

HeyGem数字人系统运行日志在哪看?实时监控技巧分享

HeyGem数字人系统运行日志在哪看&#xff1f;实时监控技巧分享 在AI数字人视频生成日益普及的今天&#xff0c;一个常见的场景是&#xff1a;你提交了批量任务&#xff0c;页面进度条卡在“处理中”不动&#xff0c;刷新也没用——这时候前端毫无反馈&#xff0c;问题到底出在哪…

作者头像 李华
网站建设 2026/4/7 1:48:29

CPU fallback模式可用吗?无GPU时HeyGem仍可运行但较慢

CPU fallback模式可用吗&#xff1f;无GPU时HeyGem仍可运行但较慢 在AI视频生成工具日益普及的今天&#xff0c;一个现实问题摆在许多用户面前&#xff1a;我没有高端显卡&#xff0c;能不能跑得动这些“重模型”应用&#xff1f; 答案是——可以。以HeyGem数字人视频生成系统为…

作者头像 李华
网站建设 2026/4/18 6:41:49

HeyGem支持4K输入吗?超高清视频处理能力实测报告

HeyGem支持4K输入吗&#xff1f;超高清视频处理能力实测报告 在数字人技术加速落地的今天&#xff0c;越来越多的企业开始尝试用AI驱动虚拟形象生成营销内容、客服应答甚至在线教学视频。随着显示设备不断升级&#xff0c;用户对画质的要求早已从“能看”转向“好看”——1080p…

作者头像 李华
网站建设 2026/4/17 18:34:55

AI口型同步准确率有多高?HeyGem语音驱动面部动作精度测评

AI口型同步准确率有多高&#xff1f;HeyGem语音驱动面部动作精度测评 在短视频与在线教育爆发式增长的今天&#xff0c;企业对高效、低成本制作专业讲解视频的需求从未如此迫切。一个常见的场景是&#xff1a;某公司需要为十位不同讲师统一录制一段产品介绍&#xff0c;传统方式…

作者头像 李华
网站建设 2026/4/18 6:40:03

【C#数据过滤终极指南】:掌握高效数据处理的7种核心技巧

第一章&#xff1a;C#数据过滤的核心概念与意义在现代软件开发中&#xff0c;处理和筛选数据是应用程序的核心任务之一。C# 作为一门功能强大的面向对象语言&#xff0c;提供了多种机制来实现高效的数据过滤。理解这些机制不仅有助于提升代码的可读性&#xff0c;还能显著提高程…

作者头像 李华