1. 程式人生 > 程式設計 >Python持續監聽檔案變化程式碼例項

Python持續監聽檔案變化程式碼例項

在日常的工作中,有時候會有這樣的需求,需要一個常駐任務,持續的監聽一個目錄下檔案的變化,對此作出迴應.

pyinotify就是這樣的一個python包,使用方式如下:

一旦src.txt有新的內容,程式就可以監控到,然後將內容傳送

import socket
import pyinotify
pos = 0


def send(c):
  c_list = [c]
  s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
  s.connect(('127.0.0.1',10001))
  print(s.recv(1024).decode('utf-8'))
  for data in c_list:
    s.send(data)
    print(s.recv(1024).decode('utf-8'))
  s.send(b'exit')
  s.close()


def printlog():
  global pos
  try:
    fd = open("src.txt")
    if pos != 0:
      fd.seek(pos,0)
    while True:
      line = fd.readline()
      if line.strip():
        send(line.strip().encode('utf8'))
      pos = pos + len(line)
      if not line.strip():
        break
    fd.close()
  except Exception as e:
    print(str(e))


class MyEventHandler(pyinotify.ProcessEvent):

  # 當檔案被修改時呼叫函式
  def process_IN_MODIFY(self,event):
    try:
      printlog()
    except Exception as e:
      print(str(e))
if __name__ == '__main__':
  printlog()
  # watch manager
  wm = pyinotify.WatchManager()
  wm.add_watch('/home/ubuntu/data-sync/s3',pyinotify.ALL_EVENTS,rec=True)
  eh = MyEventHandler()

  # notifier
  notifier = pyinotify.Notifier(wm,eh)
  notifier.loop()

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。