python處理大日志文件
本文實(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)
# 存儲文件的字符長度
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)
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Python編程實(shí)現(xiàn)tail-n查看日志文件的方法
- python 實(shí)現(xiàn)創(chuàng)建文件夾和創(chuàng)建日志文件的方法
- python寫日志文件操作類與應(yīng)用示例
- python解析基于xml格式的日志文件
- python 實(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 ORM框架SQLAlchemy學(xué)習(xí)筆記之安裝和簡單查詢實(shí)例
這篇文章主要介紹了Python ORM框架SQLAlchemy學(xué)習(xí)筆記之安裝和簡單查詢實(shí)例,簡明入門教程,需要的朋友可以參考下2014-06-06
Python遠(yuǎn)程控制Windows服務(wù)器的方法總結(jié)
在信息時代的洪流中,掌握一門編程語言已經(jīng)成為一項(xiàng)必備技能,Python,這門以簡潔、易學(xué)、強(qiáng)大著稱的編程語言,更是成為無數(shù)開發(fā)者的大寶劍,今天,我們要探討的就是如何用 Python 遠(yuǎn)程控制 Windows 服務(wù)器,需要的朋友可以參考下2024-07-07
python用selenium打開瀏覽器后秒關(guān)閉瀏覽器的解決辦法
最近朋友在學(xué)Selenium的時候遇到一個問題,當(dāng)執(zhí)行完selenium程序后,瀏覽器會閃退也就是自動關(guān)閉,這篇文章主要給大家介紹了關(guān)于python用selenium打開瀏覽器后秒關(guān)閉瀏覽器的解決辦法,需要的朋友可以參考下2023-07-07
Python實(shí)現(xiàn)將xml導(dǎo)入至excel
本文給大家講解的是使用Python的Testlink實(shí)現(xiàn)將實(shí)現(xiàn)將xml導(dǎo)入至excel表格中,方法非常的簡單,另外附上其他小伙伴的方法,有需要的童鞋們可以參考下。2015-11-11
python網(wǎng)絡(luò)爬蟲selenium打開多窗口與切換頁面的實(shí)現(xiàn)
本文主要介紹了python網(wǎng)絡(luò)爬蟲selenium打開多窗口與切換頁面的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-01-01
Python環(huán)境搭建以及Python與PyCharm安裝詳細(xì)圖文教程
PyCharm是一種PythonIDE,帶有一整套可以幫助用戶在使用Python語言開發(fā)時提高其效率的工具,這篇文章主要給大家介紹了關(guān)于Python環(huán)境搭建以及Python與PyCharm安裝的詳細(xì)圖文教程,需要的朋友可以參考下2024-03-03

