python处理大日志文件

 更新时间:2019年07月23日 09:06:03   作者:暴走的鹏鹏哥哥  
这篇文章主要为大家详细介绍了python处理大日志文件的的相关方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了python处理大日志文件的具体代码,供大家参考,具体内容如下

# coding=utf-8
import sys
import time
 
class Tail():
 def __init__(self,file_name,callback=sys.stdout.write):
  self.file_name = file_name
  self.callback = callback
 def follow(self,n=10):
  try:
   # 打开文件
   with open(self.file_name) as f:
    self._file = f
    self._file.seek(0,2)
    # 存储文件的字符长度
    self.file_length = self._file.tell()
    # 打印最后10行
    self.showLastLine(n)
    # 持续读文件 打印增量
    while True:
     line = self._file.readline()
     if line:
      self.callback(line)
     time.sleep(1)
  except Exception,e:
   print '打开文件失败,囧,看看文件是不是不存在,或者权限有问题'
   print e
 def showLastLine(self, n):
  # 一行大概100个吧 这个数改成1或者1000都行
  len_line = 100
  # n默认是10,也可以follow的参数传进来
  read_len = len_line*n
  # 用last_lines存储最后要处理的内容
  while True:
   # 如果要读取的1000个字符,大于之前存储的文件长度
   # 读完文件,直接break
   if read_len>self.file_length:
    self._file.seek(0)
    last_lines = self._file.read().split('\n')[-n:]
    break
   # 先读1000个 然后判断1000个字符里换行符的数量
   self._file.seek(-read_len, 2)
   last_words = self._file.read(read_len)
   # count是换行符的数量
   count = last_words.count('\n')
   
   if count>=n:
    # 换行符数量大于10 很好处理,直接读取
    last_lines = last_words.split('\n')[-n:]
    break
   # 换行符不够10个
   else:
    # break
    #不够十行
    # 如果一个换行符也没有,那么我们就认为一行大概是100个
    if count==0:
 
     len_perline = read_len
    # 如果有4个换行符,我们认为每行大概有250个字符
    else:
     len_perline = read_len/count
    # 要读取的长度变为2500,继续重新判断
    read_len = len_perline * n
  for line in last_lines:
   self.callback(line+'\n')
if __name__ == '__main__':
 py_tail = Tail('test.txt')
 py_tail.follow(20)

 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Python ORM框架SQLAlchemy学习笔记之安装和简单查询实例

    Python ORM框架SQLAlchemy学习笔记之安装和简单查询实例

    这篇文章主要介绍了Python ORM框架SQLAlchemy学习笔记之安装和简单查询实例,简明入门教程,需要的朋友可以参考下
    2014-06-06
  • Python远程控制Windows服务器的方法总结

    Python远程控制Windows服务器的方法总结

    在信息时代的洪流中,掌握一门编程语言已经成为一项必备技能,Python,这门以简洁、易学、强大著称的编程语言,更是成为无数开发者的大宝剑,今天,我们要探讨的就是如何用 Python 远程控制 Windows 服务器,需要的朋友可以参考下
    2024-07-07
  • Python property函数的具体使用

    Python property函数的具体使用

    property()函数是Python中用于创建可管理属性的重要工具,它可以实现数据封装、访问控制、属性计算等功能,本文就来介绍一下如何使用,感兴趣的可以了解一下
    2024-02-02
  • Python math 模块完全指南

    Python math 模块完全指南

    本文主要介绍了Python math 模块完全指南,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • python用selenium打开浏览器后秒关闭浏览器的解决办法

    python用selenium打开浏览器后秒关闭浏览器的解决办法

    最近朋友在学Selenium的时候遇到一个问题,当执行完selenium程序后,浏览器会闪退也就是自动关闭,这篇文章主要给大家介绍了关于python用selenium打开浏览器后秒关闭浏览器的解决办法,需要的朋友可以参考下
    2023-07-07
  • Python实现将xml导入至excel

    Python实现将xml导入至excel

    本文给大家讲解的是使用Python的Testlink实现将实现将xml导入至excel表格中,方法非常的简单,另外附上其他小伙伴的方法,有需要的童鞋们可以参考下。
    2015-11-11
  • python网络爬虫selenium打开多窗口与切换页面的实现

    python网络爬虫selenium打开多窗口与切换页面的实现

    本文主要介绍了python网络爬虫selenium打开多窗口与切换页面的实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • Python环境搭建以及Python与PyCharm安装详细图文教程

    Python环境搭建以及Python与PyCharm安装详细图文教程

    PyCharm是一种PythonIDE,带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,这篇文章主要给大家介绍了关于Python环境搭建以及Python与PyCharm安装的详细图文教程,需要的朋友可以参考下
    2024-03-03
  • 查看Django和flask版本的方法

    查看Django和flask版本的方法

    今天小编就为大家分享一篇查看Django和flask版本的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05
  • Python学习笔记之if语句的使用示例

    Python学习笔记之if语句的使用示例

    python的if语句和其他语言有些不同,它没有用括号来表示代码块,而是使用缩进,现在乍听一下你可能不太明白,所以下面这篇文章主要给大家介绍了关于Python学习笔记之if语句使用的相关资料,需要的朋友可以参考下。
    2017-10-10

最新评论