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 THREADING模块中的JOIN()方法深入理解
Feb 18 Python
Python实现类似jQuery使用中的链式调用的示例
Jun 16 Python
一个基于flask的web应用诞生 组织结构调整(7)
Apr 11 Python
Python实现excel转sqlite的方法
Jul 17 Python
python实现数据图表
Jul 29 Python
python中如何使用正则表达式的非贪婪模式示例
Oct 09 Python
python入门前的第一课 python怎样入门
Mar 06 Python
PyQt5每天必学之弹出消息框
Apr 19 Python
解决python3 pika之连接断开的问题
Dec 18 Python
详解将Pandas中的DataFrame类型转换成Numpy中array类型的三种方法
Jul 06 Python
python基于exchange函数发送邮件过程详解
Nov 06 Python
编写python程序的90条建议
Apr 14 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 文件上传源码分析(RFC1867)
2009/10/30 PHP
Zend Framework教程之配置文件application.ini解析
2016/03/10 PHP
ThinkPHP框架安全实现分析
2016/03/14 PHP
php微信开发之百度天气预报
2016/11/18 PHP
django中的ajax组件教程详解
2018/10/18 PHP
Yii2框架加载css和js文件的方法分析
2019/05/25 PHP
PHP执行普通shell命令流程解析
2020/08/24 PHP
js tab效果的实现代码
2009/12/26 Javascript
jquery制作漂亮的弹出层提示消息特效
2014/12/23 Javascript
jQuery中each()方法用法实例
2014/12/27 Javascript
Jquery和JS获取ul中li标签的实现方法
2016/06/02 Javascript
jQuery复制节点用法示例(clone方法)
2016/09/08 Javascript
再谈javascript注入 黑客必备!
2016/09/14 Javascript
JavaScript和JQuery获取DIV值的方法示例
2017/03/07 Javascript
jQuery中each循环的跳出和结束实例
2017/08/16 jQuery
基于Bootstrap表单验证功能
2017/11/17 Javascript
解决vue打包项目后刷新404的问题
2018/03/06 Javascript
layui结合form,table的全选、反选v1.0示例讲解
2018/08/15 Javascript
vue滑动吸顶及锚点定位的示例代码
2020/05/10 Javascript
Vue实现导航栏菜单
2020/08/19 Javascript
[04:48]DOTA2亚洲邀请赛林书豪为VGJ加油
2017/04/01 DOTA
[01:33]真香警告!DOTA2勇士令状不朽珍藏Ⅱ饰品欣赏
2018/06/26 DOTA
[01:04:20]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第一场 11.29
2020/12/02 DOTA
Python实现向服务器请求压缩数据及解压缩数据的方法示例
2017/06/09 Python
python密码错误三次锁定(实例讲解)
2017/11/14 Python
基于Django与ajax之间的json传输方法
2018/05/29 Python
python性能测量工具cProfile使用解析
2019/09/26 Python
详解python 内存优化
2020/08/17 Python
简述索引存取方法的作用和建立索引的原则
2013/03/26 面试题
学习十八大报告感言
2014/02/28 职场文书
初婚未育证明样本
2014/10/24 职场文书
限期整改通知书
2015/04/22 职场文书
2016年“12.4”法制宣传日活动总结
2016/04/01 职场文书
辞职信怎么写?
2019/05/21 职场文书
2019年暑期安全广播稿!
2019/07/03 职场文书
golang为什么要统一错误处理
2022/04/03 Golang