python读取文件最后一行
处理文件时,一个常见的需求就是读取文件的最后一行。那么这个需求用python怎么实现呢?一个朴素的想法如下:
with open('a.log', 'r') as fp:lines = fp.readlines()last_line = lines[-1]
即使不考虑异常处理的问题,这个代码也不完美,因为如果文件很大,lines = fp.readlines()会造成很大的时间和空间开销。
解决的思路是用将文件指针定位到文件尾,然后从文件尾试探出一行的长度,从而读取最后一行。代码如下:
def __get_last_line(self, filename):"""get last line of a file:param filename: file name:return: last line or None for empty file"""try:filesize = os.path.getsize(filename)if filesize == 0:return Noneelse:with open(filename 'rb') as fp: # to use seek from end, must uss mode 'rb'offset = -8 # initialize offsetwhile -offset < filesize: # offset cannot exceed file sizefp.seek(offset, 2) # read # offset chars from eof(represent by number '2')lines = fp.readlines() # read from fp to eofif len(lines) >= 2: # if contains at least 2 linesreturn lines[-1] # then last line is totally includedelse:offset *= 2 # enlarge offsetfp.seek(0)lines = fp.readlines()return lines[-1]except FileNotFoundError:print(filename + ' not found!')return None
其中有几个注意点:
1.fp.seek(offset[, where])中where=0,1,2分别表示从文件头,当前指针位置,文件尾偏移,缺省值为0,但是如果要指定where=2,文件打开的方式必须是二进制打开,即使用'rb'模式
2.设置偏移量时注意不要超过文件总的字节数,否则会报OSError.
3.注意边界条件的处理,比如文件只有一行的情况。
python读取文件最后一行相关推荐
- python读取文件第一行_python读取文件首行和最后一行
python读取文件最后一行两种方式 1)常规方法:从前往后依次读取 步骤:open打开文件. 读取文件,把文件所有行读入内存. 遍历所有行,提取指定行的数据. 优点:简单,方便 缺点:当文件大了以后 ...
- python读取文件某一行-python计算文件的行数和读取某一行内容的实现方法
一.计算文件的行数 最简单的办法是把文件读入一个大的列表中,然后统计列表的长度.如果文件的路径是以参数的形式filepath传递的,那么只用一行代码就可以完成我们的需求了: count = len(o ...
- python读取文件某一行-python和shell读取文件某一行
python和shell(awk命令) 可以实现直接读取文件的某一行,按行号进行读取 .并可以精准的取得该行的某个字段,这个有点类似于x轴.y轴定位某个点的操作. 一.awk取某行某列值 awk 可以 ...
- python读取文件某一行-使用python读取.text文件特定行的数据方法
如何用python循环读取下面.txt文件中,用红括号标出来的数据呢? 首先,观察数据可知,不同行的第一个数据元素不一样,所以考虑直接用正则表达式. 再加上,对读和写文件的操作,就行了 注:我用的是p ...
- python将文件另存为,python读取文件另存为
解决 python 读取文件乱码问题(UnicodeDecodeError) 解决 python 读取文件乱码问题(UnicodeDecodeError) 确定你的文件的编码,下面的代码将以'utf- ...
- python读取文件中的一行
python读取文件 readline()方法,读取一行文件 readlines()方法,读取多行文件,保存到一个列表中 文件内容: filepath = 'test4.txt' handle = o ...
- python读取文件第n行-python读取文件第n行
广告关闭 2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品.未来,我们一起乘风破浪,创造无限可能. pos = pos - 1 try: f.seek(pos, 2) #从 ...
- python读取文件第n行-Python读取文件后n行的代码示例
这篇文章主要介绍了Python实现读取文件最后n行的方法,涉及Python针对文件的读取.遍历与运算相关操作技巧,需要的朋友可以参考下# -*- coding:utf8-*- import os im ...
- python读取文件-python读取大文件
最近在学习python的过程中接触到了python对文件的读取.python读取文件一般情况是利用open()函数以及read()函数来完成: f = open(filename,'r') f.rea ...
最新文章
- 采用串口DMA双缓冲方法,快速更新外部FLASH中文字库
- C++ new一个数组方法和初始化的方法
- 一次短信验证码攻击的应急响应
- 怪兽级性能,用代码玩转Excel!葡萄城强势发布Spread表格组件
- linux 读写权限
- 左对齐 latex_LaTex中使用XYpic绘制交换图表
- python爬虫实例1:获取一个网页的列表数据
- Android开发屏幕适配
- selenium与firefox、 chrome版本对应关系
- Docker网桥模式ping不通宿主机
- Deep Light Enhancement without Paired Supervision (非配对数据监督学习用于低曝光图像增强)
- 华为云区块链的跨云联通能力构建
- 淘宝HTML5版私钥泄漏
- TensorFlow实现mnist书写数字分类,出现please use urllib or similar directly错误。
- Android Studio清单文件合并规则
- 用python打印几种三角形的排列
- Please, configure Web Facet first!
- Canvas和SVG的区别
- python取元素_python 如何提取对象内的元素
- python爬虫专家_Python爬虫入门教程:微医挂号网专家团队数据抓取pyspider
热门文章
- MongoDB学习笔记(一)环境搭建与常用操作
- java中final的意义
- AtomicLong和LongAdder的区别
- JavaScript模块化不算漫长的发展史
- 在一个电子商务网站应用中,涉及的实体信息类有很多,比如用户类User和用户地址类Address; 而每一个实体类的对象信息要存储到相应的数据库表中,如userTable和addressTable。
- [leetcode] 72.编辑距离
- java的解释程序_JAVA改错和程序解释
- python链表和树实验报告_关于Python实现树结构和链表结构的一点想法
- docker-Consul的概述及consul集群环境的搭建
- 华为S5700系列交换机配置文件导出、导入