本文实例为大家分享了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,日志文件
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件!
如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
白云城资源网 Copyright www.dyhadc.com
暂无“python处理大日志文件”评论...
更新日志
2025年01月10日
2025年01月10日
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]