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中列表、字符串、字典的常用操作
Sep 19 Python
Python读取MRI并显示为灰度图像实例代码
Jan 03 Python
Django + Uwsgi + Nginx 实现生产环境部署的方法
Jun 20 Python
利用python在excel里面直接使用sql函数的方法
Feb 08 Python
浅谈Python编程中3个常用的数据结构和算法
Apr 30 Python
Python生成一个迭代器的实操方法
Jun 18 Python
python项目对接钉钉SDK的实现
Jul 15 Python
实例详解Python装饰器与闭包
Jul 29 Python
Python获取时间戳代码实例
Sep 24 Python
Python工程师必考的6个经典面试题
Jun 28 Python
20行Python代码实现一款永久免费PDF编辑工具的实现
Aug 27 Python
Python干货实战之八音符酱小游戏全过程详解
Oct 24 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
《魔兽争霸3:重制版》更新 多项视觉效果调整
2020/05/04 魔兽争霸
php使用websocket示例详解
2014/03/12 PHP
yii操作cookie实例简介
2014/07/09 PHP
Laravel框架表单验证详解
2014/09/04 PHP
PHP检测用户语言的方法
2015/06/15 PHP
php-fpm开启状态统计的方法详解
2017/06/23 PHP
php实现微信原生支付(扫码支付)功能
2018/05/30 PHP
Mac下关于PHP环境和扩展的安装详解
2019/10/17 PHP
调用js时ie6和ie7,ff的区别
2009/08/19 Javascript
jQuery中绑定事件的命名空间详解
2011/04/05 Javascript
jQuery 联动日历实现代码
2012/05/31 Javascript
Javascript代码在页面加载时的执行顺序介绍
2013/05/03 Javascript
jquery属性过滤选择器使用示例
2013/06/18 Javascript
让input框实现类似百度的搜索提示(基于jquery事件监听)
2014/01/31 Javascript
基于jQuery实现仿百度首页换肤背景图片切换代码
2015/08/25 Javascript
JS HTML5实现拖拽移动列表效果
2020/08/27 Javascript
JS从数组中随机取出几个数组元素的方法
2016/08/02 Javascript
Vue中添加过渡效果的方法
2017/03/16 Javascript
vue.js $refs和$emit 父子组件交互的方法
2017/12/20 Javascript
@angular前端项目代码优化之构建Api Tree的方法
2018/12/24 Javascript
JS面向对象之多选框实现
2020/01/17 Javascript
详解vue v-model
2020/08/31 Javascript
[02:12]2019完美世界全国高校联赛(春季赛)报名开启
2019/03/01 DOTA
[54:19]完美世界DOTA2联赛PWL S2 Magma vs PXG 第二场 11.28
2020/12/01 DOTA
Python深入学习之特殊方法与多范式
2014/08/31 Python
基础的十进制按位运算总结与在Python中的计算示例
2016/06/28 Python
python 实现交换两个列表元素的位置示例
2019/06/26 Python
Python实现Mysql数据统计及numpy统计函数
2019/07/15 Python
Python列表嵌套常见坑点及解决方案
2020/09/30 Python
Html5 语法与规则简要概述
2014/07/29 HTML / CSS
Omio美国:全欧洲低价大巴、火车和航班搜索和比价
2017/11/08 全球购物
Omio意大利:全欧洲低价大巴、火车和航班搜索和比价
2017/12/02 全球购物
Parfumdreams英国:香水和化妆品
2019/05/10 全球购物
老师的检讨书
2014/02/23 职场文书
医学专业毕业生求职信
2014/06/20 职场文书
群众路线学习笔记范文
2014/11/06 职场文书