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排序方法实例分析
Apr 30 Python
Python的Django中django-userena组件的简单使用教程
May 30 Python
微信跳一跳python辅助软件思路及图像识别源码解析
Jan 04 Python
PyQt5每天必学之QSplitter实现窗口分隔
Apr 19 Python
Python 利用切片从列表中取出一部分使用的方法
Feb 01 Python
python实现按首字母分类查找功能
Oct 31 Python
Django在Model保存前记录日志实例
May 14 Python
TensorFlow keras卷积神经网络 添加L2正则化方式
May 22 Python
解决TensorFlow程序无限制占用GPU的方法
Jun 30 Python
python运算符之与用户交互
Apr 13 Python
Python使用BeautifulSoup4修改网页内容
May 20 Python
Pandas实现批量拆分与合并Excel的示例代码
May 30 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数组
2006/10/09 PHP
php5.2时间相差8小时
2007/01/15 PHP
php 获取完整url地址
2008/12/20 PHP
PHP实现上传多图即时显示与即时删除的方法
2017/05/09 PHP
window.onload 加载完毕的问题及解决方案(下)
2009/07/09 Javascript
ASP.NET jQuery 实例15 通过控件CustomValidator验证CheckBoxList
2012/02/03 Javascript
多个jquery.datatable共存,checkbox全选异常的快速解决方法
2013/12/10 Javascript
javascript 寻找错误方法整理
2014/06/15 Javascript
JavaScript Math.floor方法(对数值向下取整)
2015/01/09 Javascript
Jquery常用的方法汇总
2015/09/01 Javascript
Javascript自执行匿名函数(function() { })()的原理浅析
2016/05/15 Javascript
完美解决IE9浏览器出现的对象未定义问题
2016/09/29 Javascript
获取IE浏览器Cookie信息的方法
2017/01/23 Javascript
详解vue-router2.0动态路由获取参数
2017/06/14 Javascript
Vue表单类的父子组件数据传递示例
2018/05/03 Javascript
纯js封装的ajax功能函数与用法示例
2018/05/14 Javascript
JS 正则表达式验证密码、邮箱格式的实例代码
2018/10/28 Javascript
express + jwt + postMan验证实现持久化登录
2019/06/05 Javascript
vue 导航内容设置选中状态样式的例子
2019/11/01 Javascript
python实现博客文章爬虫示例
2014/02/26 Python
在IIS服务器上以CGI方式运行Python脚本的教程
2015/04/25 Python
关于python的list相关知识(推荐)
2017/08/30 Python
使用Flask集成bootstrap的方法
2018/07/24 Python
python实现文件的备份流程详解
2019/06/18 Python
python不同版本的_new_不同点总结
2020/12/09 Python
HTML5 video循环播放多个视频的方法步骤
2020/08/06 HTML / CSS
俄罗斯电子产品在线商店:UltraTrade
2020/01/30 全球购物
屈臣氏菲律宾官网:Watsons菲律宾
2020/06/30 全球购物
Servlet如何得到客户端机器的信息
2014/10/17 面试题
javascript实现用户必须勾选协议实例讲解
2021/03/24 Javascript
物流仓管员岗位职责
2013/12/04 职场文书
汽车销售经理岗位职责
2014/06/09 职场文书
建筑工地标语
2014/06/18 职场文书
硕士毕业答辩开场白
2015/05/27 职场文书
Python - 10行代码集2000张美女图
2021/05/23 Python
基于Python实现射击小游戏的制作
2022/04/06 Python