用python監視文件變化

最近在做一個項目,要監視一個目錄下文件的變化,不多說,先看代碼:

第一種方式:

#!/usr/bin/env python
#coding=utf-8
 
import os
import gtk
import gobject
from  pyinotify import  WatchManager, Notifier, ProcessEvent, ThreadedNotifier, IN_DELETE, IN_CREATE,IN_MOVED_TO,IN_MOVED_FROM
 
class hechao(ProcessEvent):
    def process_IN_CREATE(self, event):
        print   "創建文件: %s "  %   os.path.join(event.path, event.name)
 
    def process_IN_DELETE(self, event):
        print   "刪除文件: %s "  %   os.path.join(event.path, event.name)
 
    def process_IN_MOVED_TO(self, event):
        print   "移來文件: %s "  %   os.path.join(event.path, event.name)
 
    def process_IN_MOVED_FROM(self, event):
        print   "移走文件: %s "  %   os.path.join(event.path, event.name)
 
path = "/home/hechao/.gnomenu/favorites"
gobject.threads_init()
wm = WatchManager() 
mask = IN_DELETE|IN_CREATE|IN_MOVED_TO|IN_MOVED_FROM
notifier = ThreadedNotifier(wm, hechao())
wm.add_watch(path, mask,rec=True)
notifier.start()
 
def __quit(widget):
notifier.stop()
gtk.main_quit()
 
if __name__ == "__main__":
    win = gtk.Window()
    win.connect("destroy",__quit)
    win.show()
    gtk.main()

第二種方式:

import gio
def directory_changed(monitor, file1, file2, evt_type):
    print evt_type
    if evt_type == gio.FILE_MONITOR_EVENT_CREATED or evt_type == gio.FILE_MONITOR_EVENT_DELETED:
    print "測試成功!"
    print "變化:",evt_type
print type(evt_type)
 
 
gfile = gio.File(".")
monitor = gfile.monitor_directory(gio.FILE_MONITOR_NONE, None)
monitor.connect("changed", directory_changed) 
 
import glib
ml = glib.MainLoop()
ml.run()

再加一個定時器就OK了。

 

發佈了30 篇原創文章 · 獲贊 6 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章