博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python读取文件最后一行两种方法
阅读量:6711 次
发布时间:2019-06-25

本文共 1377 字,大约阅读时间需要 4 分钟。

1)常规方法:从前往后依次读取

              步骤:open打开文件。

                          读取文件,把文件所有行读入内存。

                          遍历所有行,提取指定行的数据。

              优点:简单,方便

              缺点:当文件大了以后时间太慢,无法忍受

  2)推荐方法:

               步骤:open打开日志文件。

                          移动文件读取指针到文件末尾。

                          从后往前移动指针直到合适的位置。

                          读取文件,提取指定行的数据。

              优点:时间相对固定,适合处理大文件

代码实现:

1 fname = 'test.html' 2 with open(fname, 'r', encoding='utf-8') as f:  # 打开文件 3     lines = f.readlines()  # 读取所有行 4     first_line = lines[0]  # 取第一行 5     last_line = lines[-1]  # 取最后一行 6     print('文件' + fname + '第一行为:'+ first_line) 7     print('文件' + fname + '最后一行为:' + last_line) 8   9  10 with open(fname, 'rb') as f:  # 打开文件11     # 在文本文件中,没有使用b模式选项打开的文件,只允许从文件头开始,只能seek(offset,0)12     first_line = f.readline()  # 取第一行13     offset = -50  # 设置偏移量14     while True:15         """16         file.seek(off, whence=0):从文件中移动off个操作标记(文件指针),正往结束方向移动,负往开始方向移动。17         如果设定了whence参数,就以whence设定的起始位为准,0代表从头开始,1代表当前位置,2代表文件最末尾位置。 18         """19         f.seek(offset, 2)  # seek(offset, 2)表示文件指针:从文件末尾(2)开始向前50个字符(-50)20         lines = f.readlines()  # 读取文件指针范围内所有行21         if len(lines) >= 2:  # 判断是否最后至少有两行,这样保证了最后一行是完整的22             last_line = lines[-1]  # 取最后一行23             break24         # 如果off为50时得到的readlines只有一行内容,那么不能保证最后一行是完整的25         # 所以off翻倍重新运行,直到readlines不止一行26         offset *= 227     print('文件' + fname + '第一行为:' + first_line.decode())28     print('文件' + fname + '最后一行为:' + last_line.decode())
View Code

 

     

转载于:https://www.cnblogs.com/liushaohui/p/9712687.html

你可能感兴趣的文章
sqlserver2005 递归查询
查看>>
30天提升技术人的写作力-第十一天
查看>>
OSPF环境下帧中继的配置
查看>>
Python 17.4 使用Web框架
查看>>
马哥1-3
查看>>
spring容器
查看>>
Linux系统架构(LB-HA集群)-nginx负载均衡集群配置
查看>>
ios版塔防类游戏源码
查看>>
Backup Exec 2010 V-79-57344-65072
查看>>
我的友情链接
查看>>
SequoiaDB 笔记
查看>>
lduan HyPer-V 网络存储(三)
查看>>
SSH 命令行参数详解【英】
查看>>
DNS服务器
查看>>
notify与notifyAll的区别
查看>>
Java读取文件方法大全
查看>>
Java学习lesson 08
查看>>
MarkDown入门
查看>>
项目经理 与 敏捷开发
查看>>
安卓软件开发你知道需要学什么吗,看这里?
查看>>