脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服务器之家 - 脚本之家 - Python - Python中使用Inotify监控文件实例

Python中使用Inotify监控文件实例

2019-11-20 22:26junjie Python

这篇文章主要介绍了Python中使用Inotify监控文件实例,本文直接给出实现代码,需要的朋友可以参考下

Inotify地址:访问

  1. # -*- coding:utf-8 -*- 
  2.   
  3. import os 
  4. import pyinotify 
  5. from functions import * 
  6.   
  7. WATCH_PATH = '' #监控目录 
  8.   
  9. if not WATCH_PATH: 
  10.   wlog('Error',"The WATCH_PATH setting MUST be set."
  11.   sys.exit() 
  12. else
  13.   if os.path.exists(WATCH_PATH): 
  14.     wlog('Watch status','Found watch path: path=%s.' % (WATCH_PATH)) 
  15.   else
  16.     wlog('Error','The watch path NOT exists, watching stop now: path=%s.' % (WATCH_PATH)) 
  17.     sys.exit() 
  18.   
  19. class OnIOHandler(pyinotify.ProcessEvent): 
  20.   def process_IN_CREATE(self, event): 
  21.     wlog('Action',"create file: %s " % os.path.join(event.path,event.name)) 
  22.   
  23.   def process_IN_DELETE(self, event): 
  24.     wlog('Action',"delete file: %s " % os.path.join(event.path,event.name)) 
  25.   
  26.   def process_IN_MODIFY(self, event): 
  27.     wlog('Action',"modify file: %s " % os.path.join(event.path,event.name)) 
  28.   
  29. def auto_compile(path = '.'): 
  30.   wm = pyinotify.WatchManager() 
  31.   mask = pyinotify.IN_CREATE | pyinotify.IN_DELETE | pyinotify.IN_MODIFY 
  32.   notifier = pyinotify.ThreadedNotifier(wm, OnIOHandler()) 
  33.   notifier.start() 
  34.   wm.add_watch(path, mask,rec = True,auto_add = True) 
  35.   wlog('Start Watch','Start monitoring %s' % path) 
  36.   while True: 
  37.     try
  38.       notifier.process_events() 
  39.       if notifier.check_events(): 
  40.         notifier.read_events() 
  41.     except KeyboardInterrupt: 
  42.       notifier.stop() 
  43.       break 
  44.   
  45. if __name__ == "__main__"
  46.    auto_compile(WATCH_PATH) 

延伸 · 阅读

精彩推荐