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生成式的send()方法(详解)
May 08 Python
python使用筛选法计算小于给定数字的所有素数
Mar 19 Python
使用实现XlsxWriter创建Excel文件并编辑
May 04 Python
解决python matplotlib imshow无法显示的问题
May 24 Python
PyQt5 在label显示的图片中绘制矩形的方法
Jun 17 Python
解决django后台管理界面添加中文内容乱码问题
Nov 15 Python
python将图片转base64,实现前端显示
Jan 09 Python
Python利用FFT进行简单滤波的实现
Feb 26 Python
Python生成器常见问题及解决方案
Mar 21 Python
TensorFLow 数学运算的示例代码
Apr 21 Python
安装并免费使用Pycharm专业版(学生/教师)
Sep 24 Python
Python如何用re模块实现简易tokenizer
May 02 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/10/09 PHP
PHP 输出简单动态WAP页面
2009/06/09 PHP
php设计模式 Bridge (桥接模式)
2011/06/26 PHP
CURL的学习和应用(附多线程实现)
2013/06/03 PHP
php 时间time与日期date之间的使用详解及区别
2016/11/07 PHP
YII框架行为behaviors用法示例
2019/04/26 PHP
简单的js分页脚本
2009/05/21 Javascript
js 回车提交表单两种实现方法
2012/12/31 Javascript
javascript中递归函数用法注意点
2015/07/30 Javascript
JS实现常见的TAB、弹出层效果(TAB标签,斑马线,遮罩层等)
2015/10/08 Javascript
jQuery倒计时代码(超简单)
2017/02/27 Javascript
javascript实现动态显示颜色块的报表效果
2017/04/10 Javascript
Vue开发Html5微信公众号的步骤
2019/04/11 Javascript
Node配合WebSocket做多文件下载以及进度回传
2019/11/07 Javascript
JS写滑稽笑脸运动效果
2020/05/28 Javascript
基于vuex实现购物车功能
2021/01/10 Vue.js
Python实现的使用telnet登陆聊天室实例
2015/06/17 Python
如何实现删除numpy.array中的行或列
2018/05/08 Python
Python2 Selenium元素定位的实现(8种)
2019/02/25 Python
详解Python中is和==的区别
2019/03/21 Python
django echarts饼图数据动态加载的实例
2019/08/12 Python
python操作微信自动发消息的实现(微信聊天机器人)
2020/07/14 Python
整理的15个非常有用的 HTML5 开发教程和速查手册
2011/10/18 HTML / CSS
英国排名第一的最新设计师品牌手表独立零售商:TIC Watches
2016/09/24 全球购物
美国男女折扣服饰百货连锁店:Stein Mart
2017/05/02 全球购物
Under Armour安德玛德国官网:美国高端运动科技品牌
2019/03/09 全球购物
师范应届生教师求职信
2013/11/05 职场文书
DIY手工制作经营店创业计划书
2014/02/01 职场文书
报告会主持词
2014/04/02 职场文书
领导班子三严三实心得体会
2014/10/13 职场文书
师德师风自查总结
2014/10/14 职场文书
工作作风建设心得体会
2014/10/22 职场文书
消防宣传标语大全
2015/08/03 职场文书
初三化学教学反思
2016/02/22 职场文书
java固定大小队列的几种实现方式详解
2021/07/15 Java/Android
「我的青春恋爱物语果然有问题。-妄言录-」第20卷封面公开
2022/03/21 日漫