您好,登錄后才能下訂單哦!
這期內(nèi)容當(dāng)中小編將會給大家?guī)碛嘘P(guān)python中怎么處理大日志文件,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
具體內(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) # 存儲文件的字符長度 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個吧 這個數(shù)改成1或者1000都行 len_line = 100 # n默認(rèn)是10,也可以follow的參數(shù)傳進(jìn)來 read_len = len_line*n # 用last_lines存儲最后要處理的內(nèi)容 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個字符里換行符的數(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個 else: # break #不夠十行 # 如果一個換行符也沒有,那么我們就認(rèn)為一行大概是100個 if count==0: len_perline = read_len # 如果有4個換行符,我們認(rèn)為每行大概有250個字符 else: len_perline = read_len/count # 要讀取的長度變?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)
上述就是小編為大家分享的python中怎么處理大日志文件了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。