Python中read()、readline()和readlines()三者间的区别和用法


Posted in Python onJuly 30, 2017

前言

众所周知在python中读取文件常用的三种方法:read(),readline(),readlines(),今天看项目是又忘记他们的区别了。以前看书的时候觉得这东西很简单,一眼扫过,待到用时却也只知道有这么几个方法,不懂得它的原理与用法。也许吧,没有永远的记忆,况且根本没有用心去记它。话不多说,来一起看看详细的介绍:

准备

假设a.txt的内容如下所示:

Hello
Welcome
What is the fuck...

一、read([size])方法

read([size])方法从文件当前位置起读取size个字节,若无参数size,则表示读取至文件结束为止,它范围为字符串对象

f = open("a.txt")
lines = f.read()
print lines
print(type(lines))
f.close()

输出结果:

Hello
Welcome
What is the fuck...
<type 'str'> #字符串类型

二、readline()方法

从字面意思可以看出,该方法每次读出一行内容,所以,读取时占用内存小,比较适合大文件,该方法返回一个字符串对象。

f = open("a.txt")
line = f.readline()
print(type(line))
while line:
 print line,
 line = f.readline()
f.close()

输出结果:

<type 'str'>
Hello
Welcome
What is the fuck...

三、readlines()方法读取整个文件所有行,保存在一个列表(list)变量中,每行作为一个元素,但读取大文件会比较占内存。

f = open("a.txt")
lines = f.readlines()
print(type(lines))
for line in lines:
 print line,
f.close()

输出结果:

<type 'list'>
Hello
Welcome
What is the fuck...

四、linecache模块

当然,有特殊需求还可以用linecache模块,比如你要输出某个文件的第n行:

# 输出第2行
text = linecache.getline(‘a.txt',2)
print text,

对于大文件效率还可以。

下面是其他网友的补充

"""
1、读取文件的三个方法:read()、readline()、readlines()
2、三个方法均可接受一个变量用以限制每次读取的数据量,通常不使用该变量。
"""

"""
关于read()方法:
1、读取整个文件,将文件内容放到一个字符串变量中
2、如果文件大于可用内存,不可能使用这种处理
"""
file_object = open("test.py",'r') #创建一个文件对象,也是一个可迭代对象
try:
  all_the_text = file_object.read() #结果为str类型
  print type(all_the_text)
  print "all_the_text=",all_the_text
finally:
  file_object.close()

"""
关于readline()方法:
1、readline()每次读取一行,比readlines()慢得多
2、readline()返回的是一个字符串对象,保存当前行的内容
"""
file_object1 = open("test.py",'r')
try:
 while True:
   line = file_object1.readline()
   if line:
     print "line=",line
   else:
     break
finally:
  file_object1.close()

"""
关于readlines()方法:
1、一次性读取整个文件。
2、自动将文件内容分析成一个行的列表。
"""
file_object2 = open("test.py",'r')
try:
 lines = file_object2.readlines()
 print "type(lines)=",type(lines) #type(lines)= <type 'list'>
 for line in lines:
   print "line=",line 
finally:
  file_object2.close()

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持

Python 相关文章推荐
python多线程抓取天涯帖子内容示例
Apr 03 Python
Python实现的爬虫功能代码
Jun 24 Python
itchat接口使用示例
Oct 23 Python
Python程序退出方式小结
Dec 09 Python
1分钟快速生成用于网页内容提取的xslt
Feb 23 Python
python opencv3实现人脸识别(windows)
May 25 Python
Python实现的简单读写csv文件操作示例
Jul 12 Python
Python设计模式之建造者模式实例详解
Jan 17 Python
Python使用修饰器进行异常日志记录操作示例
Mar 19 Python
使用python+poco+夜神模拟器进行自动化测试实例
Apr 23 Python
Python并发concurrent.futures和asyncio实例
May 04 Python
python获取淘宝服务器时间的代码示例
Apr 22 Python
深入探究Django中的Session与Cookie
Jul 30 #Python
python中numpy包使用教程之数组和相关操作详解
Jul 30 #Python
利用Python批量压缩png方法实例(支持过滤个别文件与文件夹)
Jul 30 #Python
Python利用BeautifulSoup解析Html的方法示例
Jul 30 #Python
利用python获取当前日期前后N天或N月日期的方法示例
Jul 30 #Python
Python 装饰器使用详解
Jul 29 #Python
python实现数据图表
Jul 29 #Python
You might like
PHP中的日期及时间
2006/11/23 PHP
php 日期时间处理函数小结
2009/12/18 PHP
php 数组的指针操作实现代码
2011/02/08 PHP
PHP封装的HttpClient类用法实例
2015/06/17 PHP
PHP依赖注入原理与用法分析
2018/08/21 PHP
Nigma vs Liquid BO3 第二场2.14
2021/03/10 DOTA
js 未结束的字符串常量错误解决方法
2010/06/13 Javascript
javascript实现的平方米、亩、公顷单位换算小程序
2014/08/11 Javascript
nodejs实现的一个简单聊天室功能分享
2014/12/06 NodeJs
JavaScript驾驭网页-CSS与DOM
2016/03/24 Javascript
微信小程序左右滑动切换页面详解及实例代码
2017/02/28 Javascript
ES6 javascript中class静态方法、属性与实例属性用法示例
2017/10/30 Javascript
详解Vue路由钩子及应用场景(小结)
2017/11/07 Javascript
js推箱子小游戏步骤代码解析
2018/01/10 Javascript
详解Vue 全局引入bass.scss 处理方案
2018/03/26 Javascript
关于vue的列表图片选中打钩操作
2020/09/09 Javascript
如何在JavaScript中使用localStorage详情
2021/02/04 Javascript
[45:38]DOTA2上海特级锦标赛主赛事日 - 1 胜者组第一轮#1Liquid VS Alliance第一局
2016/03/02 DOTA
Pyhton中单行和多行注释的使用方法及规范
2016/10/11 Python
apache部署python程序出现503错误的解决方法
2017/07/24 Python
Python随机生成均匀分布在三角形内或者任意多边形内的点
2017/12/14 Python
Python 实现选择排序的算法步骤
2018/04/22 Python
python3实现钉钉消息推送的方法示例
2019/03/14 Python
python flask web服务实现更换默认端口和IP的方法
2019/07/26 Python
Win10 安装PyCharm2019.1.1(图文教程)
2019/09/29 Python
wxPython实现画图板
2020/08/27 Python
python实现坦克大战
2020/04/24 Python
使用CSS3制作一个简单的Chrome模拟器
2015/07/15 HTML / CSS
波兰快递服务:Globkurier.pl
2019/11/08 全球购物
求职信模板
2014/05/23 职场文书
学校先进集体事迹材料
2014/05/31 职场文书
国际贸易毕业生求职信
2014/07/20 职场文书
设备技术员岗位职责
2015/04/11 职场文书
护理工作心得体会
2016/01/22 职场文书
在Windows下安装配置CPU版的PyTorch的方法
2021/04/02 Python
使用Bandicam录制鼠标指针并附带点击声音,还可以添加点击动画效果
2022/04/11 数码科技