news 2026/4/15 14:45:45

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 8:39:46

2026年超详细降AIGC工具合集:应届生的论文降ai行动指南

嘿&#xff0c;学弟学妹们&#xff0c;又到毕业季了。 我猜&#xff0c;你现在肯定在电脑前&#xff0c;看着AIGC检测报告上的80%发呆。别慌&#xff0c;为了论文降ai这事&#xff0c;学长我&#xff0c;去年就是这么过来的。现在的论文aigc检测&#xff0c;真的变天了。以前我…

作者头像 李华
网站建设 2026/4/15 3:43:45

C#内联数组实战指南(高性能编程稀缺技术曝光)

第一章&#xff1a;C#内联数组概述C# 内联数组&#xff08;Inline Arrays&#xff09;是 .NET 7 引入的一项重要语言特性&#xff0c;允许开发者在结构体中声明固定大小的数组&#xff0c;并将其直接嵌入结构体内存布局中。这一特性显著提升了性能敏感场景下的内存访问效率&…

作者头像 李华
网站建设 2026/4/16 11:08:45

你的拍一拍设置了啥

&#x1f44f;拍了拍我的奶茶&#xff0c;吨吨喝光光&#x1f964;&#x1f44f;拍了拍我 喊暴富锦鲤来啦✨&#x1f44f;拍了拍我的发际线&#xff0c;说稳住别退&#x1f469;&#x1f9b2;&#x1f44f;拍了拍我的钱包&#xff0c;叮&#xff01;到账10w&#x1f4b0;&#…

作者头像 李华