中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python中怎么處理大日志文件

發布時間:2021-06-17 16:41:36 來源:億速云 閱讀:195 作者:Leah 欄目:開發技術

這期內容當中小編將會給大家帶來有關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中怎么處理大日志文件了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

黑龙江省| 怀仁县| 塘沽区| 密山市| 纳雍县| 夹江县| 乃东县| 松潘县| 太仓市| 杂多县| 兴国县| 和平区| 萍乡市| 阿克苏市| 高青县| 康乐县| 盱眙县| 县级市| 宁南县| 子长县| 高尔夫| 锡林郭勒盟| 瑞安市| 汨罗市| 上栗县| 玉田县| 彩票| 泽库县| 小金县| 汕尾市| 泰兴市| 乌拉特后旗| 昌图县| 哈密市| 江达县| 行唐县| 德格县| 桦甸市| 祥云县| 九台市| 南昌县|