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函数缺省值与引用学习笔记分享
Feb 10 Python
实例讲解python函数式编程
Jun 09 Python
如何使用七牛Python SDK写一个同步脚本及使用教程
Aug 23 Python
python数据类型_字符串常用操作(详解)
May 30 Python
Python2.7基于淘宝接口获取IP地址所在地理位置的方法【测试可用】
Jun 07 Python
python实现各进制转换的总结大全
Jun 18 Python
python基本语法练习实例
Sep 19 Python
python机器学习之神经网络实现
Oct 13 Python
Python Sphinx使用实例及问题解决
Jan 17 Python
Python用Jira库来操作Jira
Dec 28 Python
Python使用Kubernetes API访问集群
May 30 Python
Python实现单例模式的5种方法
Jun 15 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和MySql来与ODBC数据连接
2006/10/09 PHP
Windows下部署Apache+PHP+MySQL运行环境实战
2012/08/31 PHP
thinkphp常见路径用法分析
2014/12/02 PHP
微信支付开发维权通知实例
2016/07/12 PHP
JavaScript中的集合及效率
2010/01/08 Javascript
javascript smipleChart 简单图标类
2011/01/12 Javascript
基于jQuery的合并表格中相同文本的相邻单元格的代码
2011/04/06 Javascript
动感效果的TAB选项卡jquery 插件
2011/07/09 Javascript
Jquery颜色选择器ColorPicker实现代码
2012/11/14 Javascript
js鼠标滑轮滚动事件绑定的简单实例(兼容主流浏览器)
2014/01/14 Javascript
跟我学Node.js(四)---Node.js的模块载入方式与机制
2014/06/04 Javascript
jQuery中appendTo()方法用法实例
2015/01/08 Javascript
最新最热最实用的15个jQuery插件汇总
2015/07/05 Javascript
JS简单模拟触发按钮点击功能的方法
2015/11/30 Javascript
深入理解Java线程编程中的阻塞队列容器
2015/12/07 Javascript
JS正则表达式修饰符中multiline(/m)用法分析
2016/12/27 Javascript
BootStrap框架中的data-[ ]自定义属性理解(推荐)
2017/02/14 Javascript
js控制随机数生成概率代码实例
2019/03/21 Javascript
浅谈js闭包理解
2019/03/28 Javascript
[51:00]Secret vs VGJ.S 2018国际邀请赛淘汰赛BO3 第一场 8.24
2018/08/25 DOTA
Linux下Python获取IP地址的代码
2014/11/30 Python
python中的字符串内部换行方法
2018/07/19 Python
Pytorch: 自定义网络层实例
2020/01/07 Python
python实现银行实战系统
2020/02/26 Python
Python图像读写方法对比
2020/11/16 Python
Chantelle仙黛尔内衣美国官网:法国第一品牌内衣
2018/07/26 全球购物
Tea Collection官网:一家位于旧金山的童装公司
2020/08/07 全球购物
职业生涯规划书的格式
2013/12/29 职场文书
单位人事专员介绍信
2014/01/11 职场文书
水污染治理工程专业求职信
2014/06/14 职场文书
未婚证明书模板
2014/10/08 职场文书
先进党组织事迹材料
2014/12/26 职场文书
学校运动会通讯稿
2015/07/18 职场文书
高中运动会前导词
2015/07/20 职场文书
python 管理系统实现mysql交互的示例代码
2021/12/06 Python
docker compose 部署 golang 的 Athens 私有代理问题
2022/04/28 Servers