zoukankan      html  css  js  c++  java
  • 如何用python最快的获取大文件的最后几行

            工作中经常会遇到处理日志文件的问题:为了得到日志的最新状态,我们需要获取日志文件的最后部分行来做判断。那么,这种情况下我们应该怎么做呢?

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

                  步骤:open打开日志文件。

                              读取文件,获取文件的总行数。

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

                  优点:简单,方便

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

             2)推荐方法:

                   步骤:open打开日志文件。

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

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

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

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

             示例:

        logFile = open('logFilePath.log', 'r')
        logFile.seek(0,2)
        logFile.seek(-1000000,2)
        rowCount = 0
        for row in logFile.readlines()[1:]:
             pass
    


     seek():移动文件读取指针到指定位置

    tell():返回文件读取指针的位置

    seek()的三种模式:

        (1)f.seek(p,0)  移动当文件第p个字节处,绝对位置

        (2)f.seek(p,1)  移动到相对于当前位置之后的p个字节

        (3)f.seek(p,2)  移动到相对文章尾之后的p个字节


  • 相关阅读:
    eclipse安装WTP部署WEB项目
    BZOJ3302: [Shoi2005]树的双中心
    BZOJ2059: [Usaco2010 Nov]Buying Feed 购买饲料
    BZOJ1986: [USACO2004 Dec] Dividing the Path 划区灌溉
    BZOJ3126: [Usaco2013 Open]Photo
    51nod1486 大大走格子
    BZOJ1698: [Usaco2007 Feb]Lilypad Pond 荷叶池塘
    BZOJ2590: [Usaco2012 Feb]Cow Coupons
    BZOJ1739: [Usaco2005 mar]Space Elevator 太空电梯
    BZOJ2501: [usaco2010 Oct]Soda Machine
  • 原文地址:https://www.cnblogs.com/chenjianhong/p/4144471.html
Copyright © 2011-2022 走看看