Python持續監聽檔案變化程式碼例項
阿新 • • 發佈:2020-07-24
在日常的工作中,有時候會有這樣的需求,需要一個常駐任務,持續的監聽一個目錄下檔案的變化,對此作出迴應.
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()
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。