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 示例分享---逻辑推理编程解决八皇后
Jul 20 Python
Python调用C/C++动态链接库的方法详解
Jul 22 Python
简单使用Python自动生成文章
Dec 25 Python
Python中类型关系和继承关系实例详解
May 25 Python
python函数中return后的语句一定不会执行吗?
Jul 06 Python
python实现读取大文件并逐行写入另外一个文件
Apr 19 Python
解决Tensorflow安装成功,但在导入时报错的问题
Jun 13 Python
Python 忽略warning的输出方法
Oct 18 Python
django 自定义过滤器的实现
Feb 26 Python
15行Python代码实现免费发送手机短信推送消息功能
Feb 27 Python
python中列表的含义及用法
May 26 Python
pycharm 2020.2.4 pip install Flask 报错 Error:Non-zero exit code的问题
Dec 04 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中switch语句用法详解
2015/08/17 PHP
实例分析基于PHP微信网页获取用户信息
2017/11/24 PHP
详解阿里云视频直播PHP-SDK接入教程
2020/07/09 PHP
Javascript与vbscript数据共享
2007/01/09 Javascript
符合标准的js表单提交的代码
2007/09/13 Javascript
js程序中美元符号$是什么
2008/06/05 Javascript
基于Jquery的开发个代阴影的对话框效果代码
2011/07/28 Javascript
解析John Resig Simple JavaScript Inheritance代码
2012/12/03 Javascript
jQuery ajax(复习)—Baidu ajax request分离版
2013/01/24 Javascript
jquery 合并内容相同的单元格(示例代码)
2013/12/13 Javascript
javascript匿名函数应用示例介绍
2014/03/07 Javascript
JS+CSS实现下拉列表框美化效果(3款)
2015/08/15 Javascript
JS实现探测网站链接的方法【测试可用】
2016/11/08 Javascript
利用Bootstrap实现表格复选框checkbox全选
2016/12/21 Javascript
微信小程序中子页面向父页面传值实例详解
2017/03/20 Javascript
微信小程序wx.previewImage预览图片实例详解
2017/12/07 Javascript
vue移动端实现红包雨效果
2020/06/23 Javascript
详解NodeJS Https HSM双向认证实现
2019/03/12 NodeJs
js实现课堂随机点名系统
2019/11/21 Javascript
Vue-cli3多页面配置详解
2020/03/22 Javascript
Vue项目移动端滚动穿透问题的实现
2020/05/19 Javascript
JavaScript setTimeout()基本用法有哪些
2020/11/04 Javascript
Python类的定义、继承及类对象使用方法简明教程
2015/05/08 Python
Python数据结构与算法之常见的分配排序法示例【桶排序与基数排序】
2017/12/15 Python
Python 通配符删除文件的实例
2018/04/24 Python
Python 实现域名解析为ip的方法
2019/02/14 Python
Python3 max()函数基础用法
2019/02/19 Python
使用HTML5 Canvas绘制圆角矩形及相关的一些应用举例
2016/03/22 HTML / CSS
英国最大的在线亚洲杂货店:Red Rickshaw
2020/03/22 全球购物
Linux上比较文件的命令都有哪些
2013/09/28 面试题
学校教师安全责任书
2014/07/23 职场文书
公司授权委托书格式范文
2014/10/02 职场文书
干部作风整顿个人剖析材料
2014/10/06 职场文书
投标售后服务承诺书
2015/04/29 职场文书
运动会主持人开幕词
2016/03/04 职场文书
如何理解Vue简单状态管理之store模式
2021/05/15 Vue.js