python中readline判断文件读取结束的方法

作者:shichen2014 时间:2022-12-14 06:22:51 

本文实例讲述了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,文件
0
投稿

猜你喜欢

  • python实现nao机器人身体躯干和腿部动作操作

    2021-07-02 07:39:47
  • 设计师的底线

    2009-05-06 12:51:00
  • Flask模板引擎之Jinja2语法介绍

    2021-11-15 21:08:11
  • 对python:threading.Thread类的使用方法详解

    2022-01-24 04:19:28
  • Go语言通道之无缓冲通道

    2024-04-25 15:25:57
  • python中的测试框架

    2023-02-16 03:59:08
  • pytorch教程resnet.py的实现文件源码分析

    2023-11-07 21:18:47
  • Python中图像算术运算的示例详解

    2023-01-01 19:56:43
  • python实现微信自动回复机器人功能

    2023-12-30 01:01:40
  • asp如何验证信用卡是否可用?

    2010-06-10 18:39:00
  • asp 删除数据库记录的代码

    2011-02-05 10:39:00
  • SQL Serve数据库到DB2连接服务器的实现过程全解

    2010-08-31 15:06:00
  • 基于Python的微信机器人开发 微信登录和获取好友列表实现解析

    2021-09-14 17:03:46
  • php7性能提升的原因详解

    2024-05-03 15:34:19
  • 小白教程|一小时上手最流行的前端框架vue(推荐)

    2024-04-30 10:34:20
  • 关于SQL Server中bit类型字段增删查改的一些事

    2024-01-13 10:07:45
  • 详解python中eval函数的作用

    2022-06-03 07:46:31
  • Oracle不同数据库间对比分析脚本

    2010-07-26 13:24:00
  • 在python 中实现运行多条shell命令

    2023-07-30 10:40:11
  • python Pandas之DataFrame索引及选取数据

    2023-01-01 02:27:10
  • asp之家 网络编程 m.aspxhome.com