日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

python處理大日志文件

系統 1804 0

本文實例為大家分享了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)

          

?以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 太仓市| 资溪县| 红桥区| 山丹县| 沐川县| 阿拉善右旗| 鲁山县| 天长市| 五台县| 阳山县| 银川市| 桃江县| 余江县| 阿瓦提县| 韩城市| 柘荣县| 海林市| 体育| 凤城市| 刚察县| 策勒县| 南溪县| 孝感市| 余江县| 镇原县| 景谷| 大同县| 吉木乃县| 大悟县| 衡阳县| 巨鹿县| 阿鲁科尔沁旗| 潼关县| 陵水| 达拉特旗| 额尔古纳市| 通江县| 上栗县| 苍南县| 从化市| 高安市|