跟小D每日学口语

python读取txt文件最后一行(文件大+文件小)

txt文件小

#coding:utf-8
'''
fname为所读xx.txt文件
输出为:文件第一行和最后一行
'''

fname = 'test.txt'
with open(fname, 'r') as f:  #打开文件
    lines = f.readlines() #读取所有行
    first_line = lines[0] #取第一行
    last_line = lines[-1] #取最后一行     
    print '文件' + fname + '第一行为:' + first_line
    print '文件' + fname + '最后一行为:'+ last_line

当文件很大时,采用这种方法不可行,资源浪费太大,采用下面方案。

txt文件大

#coding:utf-8
'''
f_name为所读xx.txt文件
输出为:文件最后一行
'''

fname = 'test.txt'
with open(fname, 'r') as f:  #打开文件
    first_line = f.readline()  #读第一行
    off = -50      #设置偏移量
    while True:
        f.seek(off, 2) #seek(off, 2)表示文件指针:从文件末尾(2)开始向前50个字符(-50)
        lines = f.readlines() #读取文件指针范围内所有行
        if len(lines)>=2: #判断是否最后至少有两行,这样保证了最后一行是完整的
            last_line = lines[-1] #取最后一行
            break
        #如果off为50时得到的readlines只有一行内容,那么不能保证最后一行是完整的
        #所以off翻倍重新运行,直到readlines不止一行
        off *= 2

    print '文件' + fname + '第一行为:' + first_line
    print '文件' + fname + '最后一行为:'+ last_line
版权声明:本文为博主原创文章,欢迎转载。转载请注明出处 http://blog.csdn.net/binchasing
posted @   Danny Chen  阅读(20449)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 字符编码:从基础到乱码解决
点击右上角即可分享
微信分享提示