用Python監視文件變化

jopen 10年前發布 | 46K 次閱讀 Python 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了。

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!