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/14 6:51:20

5分钟掌握AIGC:深入解析大模型原理、应用与开发实践!

对 AIGC 的详细说明 一、 AIGC 是什么&#xff1f;核心定义 AIGC 的全称是 Artificial Intelligence Generated Content&#xff0c;中文译为 “人工智能生成内容”。 核心定义&#xff1a;它指的是利用人工智能技术&#xff0c;通过已有数据的学习和模式识别&#xff0c;自…

作者头像 李华
网站建设 2026/4/10 20:19:01

内网穿透实现公网访问HeyGem:frp/ngrok配置教程

内网穿透实现公网访问HeyGem&#xff1a;frp/ngrok配置实战 在AI应用快速落地的今天&#xff0c;越来越多团队选择将数字人、语音合成、图像生成等系统部署在本地服务器上——既保障数据隐私&#xff0c;又能充分利用高性能GPU资源。但问题也随之而来&#xff1a;你的HeyGem视…

作者头像 李华
网站建设 2026/4/13 14:46:57

【C#跨平台权限系统设计】:从零构建高安全权限控制体系

第一章&#xff1a;C#跨平台权限系统设计概述在现代软件开发中&#xff0c;构建一个安全、灵活且可扩展的权限系统是保障应用数据完整性和用户隐私的核心环节。随着 .NET 平台对跨平台支持的不断深化&#xff0c;C# 应用已广泛部署于 Windows、Linux 和 macOS 等多种环境中&…

作者头像 李华
网站建设 2026/4/8 13:53:16

音频清晰度影响大吗?HeyGem对人声音频质量的要求解析

音频清晰度影响大吗&#xff1f;HeyGem对人声音频质量的要求解析 在数字人视频生成技术迅速普及的今天&#xff0c;越来越多的企业开始用AI驱动的虚拟形象替代传统的人工录制。无论是线上课程讲解、智能客服应答&#xff0c;还是品牌宣传短片&#xff0c;用户期待的不再只是“能…

作者头像 李华
网站建设 2026/4/8 20:09:28

基于stm32的8层楼房电梯控制系统(有完整资料)

资料查找方式&#xff1a;特纳斯电子&#xff08;电子校园网&#xff09;&#xff1a;搜索下面编号即可编号&#xff1a;T2052405M设计简介&#xff1a;本设计是基于STM32的8层楼房电梯控制系统&#xff0c;主要实现以下功能&#xff1a;&#xff08;1&#xff09;电梯有上升和…

作者头像 李华