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 相关文章推荐
使用python编写脚本获取手机当前应用apk的信息
Jul 21 Python
不要用强制方法杀掉python线程
Feb 26 Python
Python 私有函数的实例详解
Sep 11 Python
Python3中的列表生成式、生成器与迭代器实例详解
Jun 11 Python
Python实现简单的文本相似度分析操作详解
Jun 16 Python
python logging重复记录日志问题的解决方法
Jul 12 Python
pandas通过loc生成新的列方法
Nov 28 Python
python 字典访问的三种方法小结
Dec 05 Python
Python如何使用字符打印照片
Jan 03 Python
在tensorflow中实现去除不足一个batch的数据
Jan 20 Python
PIL包中Image模块的convert()函数的具体使用
Feb 26 Python
Pycharm生成可执行文件.exe的实现方法
Jun 02 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
用PHP程序实现支持页面后退的两种方法
2008/06/30 PHP
一个好用的PHP验证码类实例分享
2013/12/27 PHP
php递归函数中使用return的注意事项
2014/01/17 PHP
PHP编写RESTful接口的方法
2016/02/21 PHP
Ajax和PHP正则表达式验证表单及验证码
2016/09/24 PHP
php操作access数据库的方法详解
2017/02/22 PHP
picChange 图片切换特效的函数代码
2010/05/06 Javascript
jQuery timers计时器简单应用说明
2010/10/28 Javascript
js函数的延迟加载实现代码
2012/10/11 Javascript
js触发onchange事件的方法说明
2014/03/08 Javascript
在Ubuntu系统上安装Node.JS的教程
2015/10/15 Javascript
json定义及jquery操作json的方法
2016/09/29 Javascript
Vue方法与事件处理器详解
2016/12/01 Javascript
Angular-Ui-Router+ocLazyLoad动态加载脚本示例
2017/03/02 Javascript
Vue.js实战之利用vue-router实现跳转页面
2017/04/01 Javascript
JS中的数组转变成JSON格式字符串的方法
2017/05/09 Javascript
JS+canvas画一个圆锥实例代码
2017/12/13 Javascript
layer.msg()去掉默认时间,实现手动关闭的方法
2019/09/12 Javascript
Vue项目打包压缩的实现(让页面更快响应)
2020/03/10 Javascript
Node.js fs模块原理及常见用途
2020/10/22 Javascript
Python抽象类的新写法
2015/06/18 Python
Python中bisect的使用方法
2019/12/31 Python
如何搭建pytorch环境的方法步骤
2020/05/06 Python
python 安装移动复制第三方库操作
2020/07/13 Python
Python包资源下载路径报404解决方案
2020/11/05 Python
LA MER海蓝之谜美国官网:传奇面霜
2016/08/27 全球购物
网络方面基础面试题
2012/11/16 面试题
庆元旦文艺演出主持词
2014/03/27 职场文书
简洁的英文求职信范文
2014/05/03 职场文书
说明书格式及范文
2014/05/07 职场文书
化学教育专业自荐信
2014/07/04 职场文书
夫妻分居协议书范文
2014/11/26 职场文书
超市督导岗位职责
2015/04/10 职场文书
2015年度合同管理工作总结
2015/05/22 职场文书
小学三年级班主任工作经验交流材料
2015/11/02 职场文书
MySQL Threads_running飙升与慢查询的相关问题解决
2021/05/08 MySQL