使用Python监控文件内容变化代码实例

yipeiwu_com5年前Python基础

利用seek监控文件内容,并打印出变化内容:

#/usr/bin/env python
#-*- coding=utf-8 -*-
 
pos = 0
while True:
  con = open("a.txt")
  if pos != 0:
    con.seek(pos,0)
  while True:
  line = con.readline()
  if line.strip():
    print line.strip()
  pos = pos + len(line)
  if not line.strip():
    break
  con.close()

利用工具pyinotify监控文件内容变化,当文件逐渐变大时,可轻松完成任务:

#!/usr/bin/env python
#-*- coding=utf-8 -*-
import os
import datetime
import pyinotify
import logging
 
pos = 0
def printlog():
  global pos
  try:
    fd = open("log/a.txt")
  if pos != 0:
    fd.seek(pos,0)
  while True:
    line = fd.readline()
    if line.strip():
      print line.strip()
    pos = pos + len(line)
    if not line.strip():
    break
  fd.close()
  except Exception,e:
  print str(e)
 
class MyEventHandler(pyinotify.ProcessEvent):
  def process_IN_MODIFY(self,event):
    try:
    printlog()
  except Exception,e:
    print str(e)
 
def main():
  printlog()
  wm = pyinotify.WatchManager()
  wm.add_watch("log/a.txt",pyinotify.ALL_EVENTS,rec=True)
  eh = MyEventHandler()
  notifier = pyinotify.Notifier(wm,eh)
  notifier.loop()
if __name__ == "__main__":
  main()

相关文章

Django 使用logging打印日志的实例

Django使用python自带的logging 作为日志打印工具。简单介绍下logging。 logging 是线程安全的,其主要由4部分组成: Logger 用户使用的直接接口,将...

Django objects的查询结果转化为json的三种方式的方法

Django objects的查询结果转化为json的三种方式的方法

第一种方式: 利用seriallizers 这个方法,官网的解释说:将复杂的数据结构变成json、xml或者其他的格式 import json from django.core...

rhythmbox中文名乱码问题解决方法

sudo apt-get install python-mutagen mid3iconv -e gbk *.mp3 将中文歌曲名转换编码 当前目录下的所有 mp3 (包括子目录) fi...

Python 时间操作例子和时间格式化参数小结

1.取过去具体时间的方法:复制代码 代码如下:#!/usr/bin/python   import time  #取一天前的当前具体时间 &nb...

在Python的Flask框架下收发电子邮件的教程

 简述 在大多数此类教程中都会不遗余力的介绍如何使用数据库。今天我们对数据库暂且不表,而是来关注另一个在web应用中很重要的特性:如何推送邮件给用户。 在某个轻量级应用中我们可...