python中readline判断文件读取结束的方法


Posted in Python onNovember 08, 2014

本文实例讲述了python中readline判断文件读取结束的方法。分享给大家供大家参考。具体分析如下:

大家知道,python中按行读取文件可以使用readline函数,下面现介绍一个按行遍历读取文件的方法,通过这个方法,展开我们要讨论的问题:

filename = raw_input('Enter your file name')  #输入要遍历读取的文件路径及文件名

file = open(filename,'r')

done = 0

while not  done:

        aLine = file.readline()

        if(aLine != ''):

            print aLine,

        else:

            done = 1

file.close()   #关闭文件

上面是我们经常看到的按行遍历一个文件方法,你可能已经注意到我在代码中写的if(aLine != '' ):部分。当readline读取到为空的时候,意味着读到了文件的结束。这个时候,问题就在这里,很多人会想,是不是遇到一个空行,也会被认为是文件的结束呢?这就引入了标题的问题。

事实上,文件的空白行并不会返回一个空行。因为在每一行的末尾还有一个或者多个分隔符,因此“空白行”至少会有一个换行符或者系统使用的其他符号。所以,即使文件中真的包含一个“空白行”,读入的行也不是空的,这就意味着在真实遍历读取到文件结束之前,程序实际上是不会停止的

readline() 和 .readlines() 非常相似。它们都在类似于以下的结构中使用:
Python .readlines()

示例如下:

fh = open('c:\autoexec.bat')

 for  line in  fh.readlines(): 

 print  line

       
.readline() 和 .readlines() 之间的差异是后者一次读取整个文件,象 .read() 一样。.readlines() 自动将文件内容分析成一个行的列表,该列表可以由 Python 的 for ... in ... 结构进行处理。另一方面,.readline() 每次只读取一行,通常比 .readlines() 慢得多。仅当没有足够内存可以一次读取整个文件时,才应该使用 .readline()。

readlines返回行数问题

官方文档这样写的:
If the optional sizehint argument is present, instead of reading up to EOF, whole lines totalling approximately sizehint bytes (possibly after rounding up to an internal buffer size) are read.

确实是指定大小啊并且会受内部缓冲区大小影响向上取整到内部缓冲区大小。内部缓冲区大约是8k也难怪我每次测试文件大小都是8k(8192)倍数

#!/usr/bin/env python

f=open('a.txt').readlines(1)

open('b.txt','w').writelines(f)

open('c.txt','w').writelines(open('a.txt').readlines(200))

open('d.txt','w').writelines(open('a.txt').readlines(9200))

open('e.txt','w').writelines(open('a.txt').readlines(26000))

open('f.txt','w').writelines(open('a.txt').readlines(40000))

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
wxpython 最小化到托盘与欢迎图片的实现方法
Jun 09 Python
在Mac OS系统上安装Python的Pillow库的教程
Nov 20 Python
Django应用程序中如何发送电子邮件详解
Feb 04 Python
Python实现的爬虫功能代码
Jun 24 Python
简述Python2与Python3的不同点
Jan 21 Python
使用Python检测文章抄袭及去重算法原理解析
Jun 14 Python
python中如何实现将数据分成训练集与测试集的方法
Sep 13 Python
PyCharm Anaconda配置PyQt5开发环境及创建项目的教程详解
Mar 24 Python
把Anaconda中的环境导入到Pycharm里面的方法步骤
Oct 30 Python
python 如何停止一个死循环的线程
Nov 24 Python
Django中使用Celery的方法步骤
Dec 07 Python
pycharm 实现光标快速移动到括号外或行尾的操作
Feb 05 Python
Python实现基于HTTP文件传输实例
Nov 08 #Python
Python使用urllib模块的urlopen超时问题解决方法
Nov 08 #Python
Python set集合类型操作总结
Nov 07 #Python
数据挖掘之Apriori算法详解和Python实现代码分享
Nov 07 #Python
Python的subprocess模块总结
Nov 07 #Python
Python实现的监测服务器硬盘使用率脚本分享
Nov 07 #Python
Python实现的简单发送邮件脚本分享
Nov 07 #Python
You might like
先进的自动咖啡技术,真的可以取代咖啡师吗?
2021/03/06 冲泡冲煮
Php+SqlServer实现分页显示
2006/10/09 PHP
利用phpexcel把excel导入数据库和数据库导出excel实现
2014/01/09 PHP
在PHP中运行Linux命令并启动SSH服务的例子
2014/06/12 PHP
PHP学习笔记之php文件操作
2016/06/03 PHP
PHP中CheckBox多选框上传失败的代码写法
2017/02/13 PHP
PHP两个n位的二进制整数相加问题的解决
2018/08/26 PHP
CI框架教程之优化验证码机制详解【验证码辅助函数】
2019/04/16 PHP
用javascript获得地址栏参数的两种方法
2006/11/08 Javascript
用jquery等比例控制图片宽高的具体实现
2014/01/28 Javascript
js中自定义方法实现停留几秒sleep
2014/07/11 Javascript
不想让浏览器运行javascript脚本的方法
2015/11/20 Javascript
jQuery基于json与cookie实现购物车的方法
2016/04/15 Javascript
jQuery的deferred对象使用详解
2016/09/25 Javascript
jQuery实现动态添加、删除按钮及input输入框的方法
2017/04/27 jQuery
微信小程序中使用Promise进行异步流程处理的实例详解
2017/08/17 Javascript
Element 默认勾选表格 toggleRowSelection的实现
2019/09/04 Javascript
javascript之分片上传,断点续传的实际项目实现详解
2019/09/05 Javascript
Python实例之wxpython中Frame使用方法
2014/06/09 Python
python中星号变量的几种特殊用法
2016/09/07 Python
Python3中使用PyMongo的方法详解
2017/07/28 Python
Python自定义简单图轴简单实例
2018/01/08 Python
python实现本地图片转存并重命名的示例代码
2018/10/27 Python
python读取各种文件数据方法解析
2018/12/29 Python
利用Python+阿里云实现DDNS动态域名解析的方法
2019/04/01 Python
Python类绑定方法及非绑定方法实例解析
2020/10/09 Python
美国高品质个性化珠宝销售网站:Jewlr
2018/05/03 全球购物
师范学院教师自荐书
2014/01/31 职场文书
高一新生军训感言
2014/03/02 职场文书
环保倡议书范文
2014/05/12 职场文书
股东授权委托书范文
2014/09/13 职场文书
2014第二批党员干部对照“四风”找差距检查材料思想汇报
2014/09/18 职场文书
异地年检委托书范本
2014/09/24 职场文书
给朋友的赠语
2015/06/23 职场文书
员工担保书范本
2015/09/22 职场文书
选调生挂职锻炼工作总结
2015/10/23 职场文书