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 相关文章推荐
使用Django Form解决表单数据无法动态刷新的两种方法
Jul 14 Python
利用Python批量压缩png方法实例(支持过滤个别文件与文件夹)
Jul 30 Python
Python使用文件锁实现进程间同步功能【基于fcntl模块】
Oct 16 Python
python数据类型之间怎么转换技巧分享
Aug 20 Python
python解释器spython使用及原理解析
Aug 24 Python
Python3离线安装Requests模块问题
Oct 13 Python
使用Python串口实时显示数据并绘图的例子
Dec 26 Python
PyTorch 解决Dataset和Dataloader遇到的问题
Jan 08 Python
python MultipartEncoder传输zip文件实例
Apr 07 Python
浅谈keras使用中val_acc和acc值不同步的思考
Jun 18 Python
python FTP编程基础入门
Feb 27 Python
Python django中如何使用restful框架
Jun 23 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批量更改数据库表前缀实现方法
2013/10/26 PHP
php防止sql注入代码实例
2013/12/18 PHP
php 广告点击统计代码(php+mysql)
2018/02/21 PHP
PHP扩展Swoole实现实时异步任务队列示例
2019/04/13 PHP
laravel框架模型中非静态方法也能静态调用的原理分析
2019/11/23 PHP
js内置对象 学习笔记
2011/08/01 Javascript
JS控制图片等比例缩放的示例代码
2013/12/24 Javascript
js基础之DOM中document对象的常用属性方法详解
2016/10/28 Javascript
canvas实现粒子时钟效果
2017/02/06 Javascript
js排序与重组的实例讲解
2017/08/28 Javascript
浅谈Angular4实现热加载开发旅程
2017/09/08 Javascript
webpack公共组件引用路径简化小技巧
2018/06/15 Javascript
vue-router beforeEach跳转路由验证用户登录状态
2018/12/26 Javascript
React中this丢失的四种解决方法
2019/03/12 Javascript
vue动态循环出的多个select出现过的变为disabled(实例代码)
2019/11/10 Javascript
使用JavaScript计算前一天和后一天的思路详解
2019/12/20 Javascript
JavaScript运行机制实例分析
2020/04/11 Javascript
JavaScript闭包原理与用法学习笔记
2020/05/29 Javascript
详解Vue的mixin策略
2020/11/19 Vue.js
Python Web框架Flask下网站开发入门实例
2015/02/08 Python
Python3中条件控制、循环与函数的简易教程
2017/11/21 Python
浅谈Python2获取中文文件名的编码问题
2018/01/09 Python
Python+tkinter模拟“记住我”自动登录实例代码
2018/01/16 Python
Linux-ubuntu16.04 Python3.5配置OpenCV3.2的方法
2018/04/02 Python
python编写简易聊天室实现局域网内聊天功能
2018/07/28 Python
Python中输入和输出(打印)数据实例方法
2019/10/13 Python
python实现拉普拉斯特征图降维示例
2019/11/25 Python
Python实现点云投影到平面显示
2020/01/18 Python
python 实现PIL模块在图片画线写字
2020/05/16 Python
几个常见的软件测试问题
2016/09/07 面试题
护士实习鉴定范文
2013/12/22 职场文书
大学计划书范文800字
2014/08/14 职场文书
写给女朋友的保证书
2015/05/09 职场文书
十七岁的单车观后感
2015/06/12 职场文书
SQL Server数据库基本概念、组成、常用对象与约束
2022/03/20 SQL Server
Python如何快速找到多个字典中的公共键(key)
2022/04/29 Python