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中from module import * 的一个坑
Jul 20 Python
基于python yield机制的异步操作同步化编程模型
Mar 18 Python
浅谈插入排序算法在Python程序中的实现及简单改进
May 04 Python
Python 爬虫学习笔记之单线程爬虫
Sep 21 Python
Python进阶之自定义对象实现切片功能
Jan 07 Python
python简单实现AES加密和解密
Mar 28 Python
python tools实现视频的每一帧提取并保存
Mar 20 Python
Django 过滤器汇总及自定义过滤器使用详解
Jul 19 Python
TensorFlow基本的常量、变量和运算操作详解
Feb 03 Python
Django关于admin的使用技巧和知识点
Feb 10 Python
Python实现Word表格转成Excel表格的示例代码
Apr 16 Python
Python 装饰器(decorator)常用的创建方式及解析
Apr 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
PHP中date()日期函数有关参数整理
2011/07/19 PHP
php-perl哈希算法实现(times33哈希算法)
2013/12/30 PHP
PHP中redis的用法深入解析
2014/02/20 PHP
PHP、Nginx、Apache中禁止网页被iframe引用的方法
2020/10/01 PHP
Ecshop 后台添加新功能栏目及管理权限设置教程
2017/11/21 PHP
PHP抽象类与接口的区别详解
2019/03/21 PHP
分析 JavaScript 中令人困惑的变量赋值
2007/08/13 Javascript
9个JavaScript评级/投票插件
2010/01/18 Javascript
jquery 事件冒泡的介绍以及如何阻止事件冒泡
2012/12/25 Javascript
javascript字母大小写转换的4个函数详解
2014/05/09 Javascript
模板视图和AngularJS之间冲突的解决方法
2016/11/22 Javascript
详解开源的JavaScript插件化框架MinimaJS
2017/10/26 Javascript
基于js 字符串indexof与search方法的区别(详解)
2017/12/04 Javascript
jquery获取transform里的值实现方法
2017/12/12 jQuery
详解Nuxt.js部署及踩过的坑
2018/08/07 Javascript
鸿蒙系统中的 JS 开发框架
2020/09/18 Javascript
[01:48:04]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Elephant BO3 第一场 2月7日
2021/03/11 DOTA
Python中bisect的用法
2014/09/23 Python
tensorflow 输出权重到csv或txt的实例
2018/06/14 Python
Python3.7中安装openCV库的方法
2018/07/11 Python
python用BeautifulSoup库简单爬虫实例分析
2018/07/30 Python
Python数据类型之Tuple元组实例详解
2019/05/08 Python
Python 复平面绘图实例
2019/11/21 Python
django 框架实现的用户注册、登录、退出功能示例
2019/11/28 Python
python垃圾回收机制(GC)原理解析
2019/12/30 Python
python实现百度OCR图片识别过程解析
2020/01/17 Python
什么是python的id函数
2020/06/11 Python
python中的yield from语法快速学习
2020/11/06 Python
python实现无边框进度条的实例代码
2020/12/30 Python
Skechers越南官方网站:来自美国的运动休闲品牌
2021/02/22 全球购物
致长跑运动员广播稿
2014/01/31 职场文书
交通安全寄语大全
2014/04/08 职场文书
争先创优心得体会
2014/09/12 职场文书
李强为自己工作观后感
2015/06/11 职场文书
事业单位工作人员岗前培训心得体会
2016/01/08 职场文书
《女娲补天》读后感5篇
2019/12/31 职场文书