python處理大日志文件
更新時(shí)間:2019年07月23日 09:06:03 作者:暴走的鵬鵬哥哥
這篇文章主要為大家詳細(xì)介紹了python處理大日志文件的的相關(guān)方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
本文實(shí)例為大家分享了python處理大日志文件的具體代碼,供大家參考,具體內(nèi)容如下
# 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) # 存儲(chǔ)文件的字符長(zhǎng)度 self.file_length = self._file.tell() # 打印最后10行 self.showLastLine(n) # 持續(xù)讀文件 打印增量 while True: line = self._file.readline() if line: self.callback(line) time.sleep(1) except Exception,e: print '打開文件失敗,囧,看看文件是不是不存在,或者權(quán)限有問題' print e def showLastLine(self, n): # 一行大概100個(gè)吧 這個(gè)數(shù)改成1或者1000都行 len_line = 100 # n默認(rèn)是10,也可以follow的參數(shù)傳進(jìn)來 read_len = len_line*n # 用last_lines存儲(chǔ)最后要處理的內(nèi)容 while True: # 如果要讀取的1000個(gè)字符,大于之前存儲(chǔ)的文件長(zhǎng)度 # 讀完文件,直接break if read_len>self.file_length: self._file.seek(0) last_lines = self._file.read().split('\n')[-n:] break # 先讀1000個(gè) 然后判斷1000個(gè)字符里換行符的數(shù)量 self._file.seek(-read_len, 2) last_words = self._file.read(read_len) # count是換行符的數(shù)量 count = last_words.count('\n') if count>=n: # 換行符數(shù)量大于10 很好處理,直接讀取 last_lines = last_words.split('\n')[-n:] break # 換行符不夠10個(gè) else: # break #不夠十行 # 如果一個(gè)換行符也沒有,那么我們就認(rèn)為一行大概是100個(gè) if count==0: len_perline = read_len # 如果有4個(gè)換行符,我們認(rèn)為每行大概有250個(gè)字符 else: len_perline = read_len/count # 要讀取的長(zhǎng)度變?yōu)?500,繼續(xù)重新判斷 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)
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
您可能感興趣的文章:
- Python編程實(shí)現(xiàn)tail-n查看日志文件的方法
- python 實(shí)現(xiàn)創(chuàng)建文件夾和創(chuàng)建日志文件的方法
- python寫日志文件操作類與應(yīng)用示例
- python解析基于xml格式的日志文件
- python 實(shí)時(shí)遍歷日志文件
- Python解析nginx日志文件
- python實(shí)現(xiàn)分析apache和nginx日志文件并輸出訪客ip列表的方法
- python腳本實(shí)現(xiàn)統(tǒng)計(jì)日志文件中的ip訪問次數(shù)代碼分享
- python 從遠(yuǎn)程服務(wù)器下載日志文件的程序
相關(guān)文章
Python實(shí)現(xiàn)自動(dòng)添加腳本頭信息的示例代碼
這篇文章給大家介紹的一段腳本是自動(dòng)添加注釋信息的腳本,添加的信息包括腳本名稱、作者和時(shí)間等之類的,對(duì)于團(tuán)隊(duì)形成統(tǒng)一的編碼規(guī)則很有幫助。有需要的可以參考借鑒。2016-09-09Python在信息學(xué)競(jìng)賽中的運(yùn)用及Python的基本用法(詳解)
下面小編就為大家?guī)硪黄狿ython在信息學(xué)競(jìng)賽中的運(yùn)用及Python的基本用法(詳解)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-08-08使用Python構(gòu)建Hopfield網(wǎng)絡(luò)的教程
這篇文章主要介紹了使用Python構(gòu)建Hopfield網(wǎng)絡(luò)的教程,本文來自于IBM官方網(wǎng)站的技術(shù)文檔,需要的朋友可以參考下2015-04-04如何分離django中的媒體、靜態(tài)文件和網(wǎng)頁(yè)
這篇文章主要介紹了如何分離django中的媒體、靜態(tài)文件和網(wǎng)頁(yè),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11