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在多玩图片上下载妹子图的实现代码
Aug 13 Python
浅谈Python类里的__init__方法函数,Python类的构造函数
Dec 10 Python
Python深度优先算法生成迷宫
Jan 22 Python
python 处理dataframe中的时间字段方法
Apr 10 Python
matplotlib命令与格式之tick坐标轴日期格式(设置日期主副刻度)
Aug 06 Python
python实现ip地址查询经纬度定位详解
Aug 30 Python
python ImageDraw类实现几何图形的绘制与文字的绘制
Feb 26 Python
Python批量安装卸载1000个apk的方法
Apr 10 Python
python脚本和网页有何区别
Jul 02 Python
Jupyter安装链接aconda实现过程图解
Nov 02 Python
如何使用python-opencv批量生成带噪点噪线的数字验证码
Dec 21 Python
python中sqllite插入numpy数组到数据库的实现方法
Jun 21 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
腾讯QQ php程序员面试题目整理
2010/06/08 PHP
php debug 安装技巧
2011/04/30 PHP
用PHP实现 上一篇、下一篇的代码
2012/09/29 PHP
PHP环境中Memcache的安装和使用
2015/11/05 PHP
JavaScript 入门·JavaScript 具有全范围的运算符
2007/10/01 Javascript
使用JS CSS去除IE链接虚线框的三种方法
2013/11/14 Javascript
基于javascript实现判断移动终端浏览器版本信息
2014/12/09 Javascript
轻松学习jQuery插件EasyUI EasyUI创建树形菜单
2015/11/30 Javascript
node-http-proxy修改响应结果实例代码
2016/06/06 Javascript
jQuery实现立体式数字滚动条增加效果
2016/12/21 Javascript
javascript编程实现栈的方法详解【经典数据结构】
2017/04/11 Javascript
关于jQuery库冲突的完美解决办法
2017/05/20 jQuery
Vue from-validate 表单验证的示例代码
2017/09/26 Javascript
JavaScript中利用Array filter() 方法压缩稀疏数组
2018/02/24 Javascript
基于vue打包后字体和图片资源失效问题的解决方法
2018/03/06 Javascript
微信小程序视图容器(swiper)组件创建轮播图
2020/06/19 Javascript
判断js数据类型的函数实例详解
2019/05/23 Javascript
详解Vue 换肤方案验证
2019/08/28 Javascript
JS实现吸顶特效
2020/01/08 Javascript
基于Vue sessionStorage实现保留搜索框搜索内容
2020/06/01 Javascript
原生JavaScript实现贪吃蛇游戏
2020/11/04 Javascript
[02:30]联想杯DOTA2完美世界全国高校联赛—北京站现场
2015/11/16 DOTA
Python实现将DOC文档转换为PDF的方法
2015/07/25 Python
Python中遍历字典过程中更改元素导致异常的解决方法
2016/05/12 Python
python利用dir函数查看类中所有成员函数示例代码
2017/09/08 Python
python实现爬取图书封面
2018/07/05 Python
Python进程,多进程,获取进程id,给子进程传递参数操作示例
2019/10/11 Python
Python3 Click模块的使用方法详解
2020/02/12 Python
是否可以从一个static方法内部发出对非static方法的调用?
2014/08/18 面试题
法律工作求职自荐信
2013/10/31 职场文书
房务中心文员岗位职责
2014/04/16 职场文书
安全承诺书
2015/01/19 职场文书
2015年护理工作总结范文
2015/04/03 职场文书
2015年六年级班主任工作总结
2015/10/15 职场文书
Pytorch中使用ImageFolder读取数据集时忽略特定文件
2022/03/23 Python
PostgreSQL怎么创建分区表详解
2022/06/25 PostgreSQL