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实现正则检测密码合法性
Jan 05 Python
Python实现购物程序思路及代码
Jul 24 Python
深入理解Python3 内置函数大全
Nov 23 Python
Python爬虫实现全国失信被执行人名单查询功能示例
May 03 Python
Python面向对象之继承和组合用法实例分析
Aug 27 Python
python3编写ThinkPHP命令执行Getshell的方法
Feb 26 Python
远程部署工具Fabric详解(支持Python3)
Jul 04 Python
python同时替换多个字符串方法示例
Sep 17 Python
python创建子类的方法分析
Nov 28 Python
python numpy--数组的组合和分割实例
Feb 24 Python
解决Pytorch自定义层出现多Variable共享内存错误问题
Jun 28 Python
一篇文章搞懂python混乱的切换操作与优雅的推导式
Aug 23 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面向对象与面向过程两种方法给图片添加文字水印
2015/08/26 PHP
php Session无效分析资料整理
2016/11/29 PHP
在laravel5.2中实现点击用户头像更改头像的方法
2019/10/14 PHP
个人总结的一些关于String、Function、Array的属性和用法
2007/01/10 Javascript
jquery选择checked在ie8普通模式下的问题
2014/02/12 Javascript
jQuery之ajax删除详解
2014/02/27 Javascript
jquery实现表格中点击相应行变色功能效果【实例代码】
2016/05/09 Javascript
jQuery插件FusionWidgets实现的Cylinder图效果示例【附demo源码】
2017/03/23 jQuery
JS库之Particles.js中文开发手册及参数详解
2017/09/13 Javascript
vue项目开发中setTimeout等定时器的管理问题
2018/09/13 Javascript
vue滚动插件better-scroll使用详解
2019/10/18 Javascript
jQuery实现轮播图效果
2019/11/26 jQuery
vue实现用户长时间不操作自动退出登录功能的实现代码
2020/07/23 Javascript
Vue父组件监听子组件生命周期
2020/09/03 Javascript
vue打开子组件弹窗都刷新功能的实现
2020/09/21 Javascript
[01:29]2014DOTA2展望TI 剑指西雅图DK战队专访
2014/06/30 DOTA
[43:41]OG vs Newbee 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.21.mp4
2020/07/19 DOTA
python保存字符串到文件的方法
2015/07/01 Python
Python基于pygame实现的font游戏字体(附源码)
2015/11/11 Python
Python操作Excel之xlsx文件
2017/03/24 Python
Python装饰器用法示例小结
2018/02/11 Python
python+ffmpeg视频并发直播压力测试
2018/03/06 Python
详解TensorFlow查看ckpt中变量的几种方法
2018/06/19 Python
python跳出双层for循环的解决方法
2019/06/24 Python
用Python爬取QQ音乐评论并制成词云图的实例
2019/08/24 Python
python实现while循环打印星星的四种形状
2019/11/23 Python
Python接口测试文件上传实例解析
2020/05/22 Python
canvas绘制表情包的示例代码
2018/07/09 HTML / CSS
前后端结合实现amazeUI分页效果
2020/08/21 HTML / CSS
企业演讲比赛主持词
2014/03/18 职场文书
2014报到证办理个人委托书
2014/10/08 职场文书
小平您好观后感
2015/06/09 职场文书
高温慰问简报
2015/07/21 职场文书
理解深度学习之深度学习简介
2021/04/14 Python
详解Python为什么不用设计模式
2021/06/24 Python
十大最强格斗系宝可梦,超梦X仅排第十,第二最重格斗礼仪
2022/03/18 日漫