Python持續監聽文件變化代碼實例
在日常的工作中,有時候會有這樣的需求,需要一個常駐任務,持續的監聽一個目錄下文件的變化,對此作出回應.
pyinotify就是這樣的一個python包,使用方式如下:
一旦src.txt有新的內容,程序就可以監控到,然后將內容發送
import socketimport pyinotifypos = 0def 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()
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。
相關文章:
1. vue實現web在線聊天功能2. JavaScript實現頁面動態驗證碼的實現示例3. JavaEE SpringMyBatis是什么? 它和Hibernate的區別及如何配置MyBatis4. Springboot 全局日期格式化處理的實現5. SpringBoot+TestNG單元測試的實現6. 完美解決vue 中多個echarts圖表自適應的問題7. 解決Android Studio 格式化 Format代碼快捷鍵問題8. 在Chrome DevTools中調試JavaScript的實現9. Python使用urlretrieve實現直接遠程下載圖片的示例代碼10. Java使用Tesseract-Ocr識別數字
