news 2026/9/24 8:46:21

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/9/20 16:51:03

从Prompt到多模态:大模型核心术语全解析,程序员必看收藏指南

✅ 导语&#xff1a;当下AI领域的热门词汇层出不穷&#xff0c;Prompt、Agent、MCP、Skills更是高频出现&#xff0c;看不懂总觉得跟不上节奏。今天整理了这份通俗易懂的AI核心术语清单&#xff0c;无专业晦涩表述&#xff0c;看完就能轻松理解&#xff0c;还附赠同量级必懂热门…

作者头像 李华
网站建设 2026/9/23 1:55:36

智慧港口倍福PLC和欧姆龙CJ2M系列PLC通过协议转换网关进行通讯去控制DeviceNet从站设备案例

一、案例背景与项目痛点案例背景某大型现代化集装箱港口正在推进智慧港口建设&#xff0c;为提升作业效率和设备协同水平&#xff0c;计划将新增的自动化轨道吊系统与现有轮胎吊系统进行深度融合。新增轨道吊采用倍福CX2040系列PLC作为主控制器&#xff0c;通过EtherCAT总线实现…

作者头像 李华
网站建设 2026/9/20 17:22:10

别再复制数据了,用C# Span实现超高速转换,现在学还不晚!

第一章&#xff1a;Span概述&#xff1a;C#中的高性能数据转换新范式Span<T> 是 C# 7.2 引入的一种高效内存抽象类型&#xff0c;专为栈分配和堆外内存操作设计&#xff0c;旨在解决传统数组和集合在频繁数据拷贝与跨层传递时带来的性能瓶颈。它提供对连续内存区域的安全…

作者头像 李华
网站建设 2026/9/19 23:32:33

Prolog语言入门教程:从安装到核心概念全解析

作为一名有十余年教学经验的计算机科学教师&#xff0c;我见证了Prolog这门语言在逻辑编程领域的独特地位。它并非用于开发常规应用&#xff0c;而是解决那些涉及符号计算、关系定义和逻辑推理的特定问题。理解其声明式编程范式&#xff0c;是掌握它的关键。本文将带你避开理论…

作者头像 李华