Demo
import pyinotify
import sys
import os
WATCH_PATH = '/home/newdata' # 監控目錄
if not WATCH_PATH:
print("The WATCH_PATH setting MUST be set.")
sys.exit()
else:
if os.path.exists(WATCH_PATH):
print('Found watch path: path=%s.' % (WATCH_PATH))
else:
print('The watch path NOT exists, watching stop now: path=%s.' % (WATCH_PATH))
sys.exit()
# 事件回調函數
class OnFileHandler(pyinotify.ProcessEvent):
# 重寫文件寫入完成函數
def process_IN_CLOSE_WRITE(self, event):
# logging.info("create file: %s " % os.path.join(event.path, event.name))
file_path = os.path.join(event.path, event.name)
print('文件完成寫入',file_path)
# 重寫文件刪除函數
def process_IN_DELETE(self, event):
print("文件刪除: %s " % os.path.join(event.path, event.name))
# 重寫文件改變函數
def process_IN_MODIFY(self, event):
print("文件改變: %s " % os.path.join(event.path, event.name))
# 重寫文件創建函數
def process_IN_CREATE(self, event):
print("文件創建: %s " % os.path.join(event.path, event.name))
def auto_compile(path='.'):
wm = pyinotify.WatchManager()
# mask = pyinotify.EventsCodes.ALL_FLAGS.get('IN_CREATE', 0)
# mask = pyinotify.EventsCodes.FLAG_COLLECTIONS['OP_FLAGS']['IN_CREATE'] # 監控內容,監聽文件創建,刪除和被完成寫入
mask = pyinotify.IN_CREATE | pyinotify.IN_CLOSE_WRITE | pyinotify.IN_DELETE
notifier = pyinotify.Notifier(wm, OnFileHandler()) # 回調函數
wm.add_watch(path, mask, rec=True, auto_add=True)
print('Start monitoring %s' % path)
while True:
try:
notifier.process_events()
if notifier.check_events():
notifier.read_events()
except KeyboardInterrupt:
notifier.stop()
break
if __name__ == "__main__":
auto_compile(WATCH_PATH)
print('monitor close')