path_to_watch = "."before = dict ([(f, None) for f in os.listdir (path_to_watch)])while 1:
time.sleep (10)
after = dict ([(f, None) for f in os.listdir (path_to_watch)])
added = [f for f in after if not f in before]
removed = [f for f in before if not f in after] if added: print "Added: ", "碰晌, ".join (added) if removed: print "毁凯Removed: ", ", "纤吵唤.join (removed)
before = after
打算写一个文件监控的python程序了解了一下watchdog这个库
打算学习一下=。=
watchdog用来监控指定目录/文件的变化,如添加删除文件或目录、修改文件内容、重命名文件或目录等,每种变化都会产生一个事件,且有一个特定的事件类与之对应,然后再通过事件处理类来处理对应的事件,怎么样处理事件完全可以自定义,只需继承事件处理类的基类并重写对应实例方法。
上面两个是events和observer
介绍一下
主要的内容都在events这个文件里面
包含了所有的可监听的事件
看一下例子的 LoggingEventHandler
watchdog.events.FileSystemEventHandler()
事件处理器的基类,用于处理事件,用户需继承该类,并在子类中重写对应方法。
类实例方法如下:
该类实现了监控文件变化,触发对应的事件类,然后调用关联的事件处理类来处理事件。该类其实是threading.Thread的子类,通过observer.start()使之运行在一个线程中,不会阻塞主进程运行,然后可以调用observer.stop()来停止该线程
实例属性及方法:
observer.schedule(event_handler, path, recursive=False)
监控指衫携定路径path,该路径触发任何事件都会调用event_handler来处理,如果path是目录,则recursive=True则会递归监控该目录的所有变化。每一次调用schedule()对一个路径进行监控处理就叫做一个watch,schedule()方法会返回这个watch,接着可以对这个watch做其他 *** 作,如为该watch增加多个event处理器等
注:内部由一个字典handlers来保存所有watch,watch的值是一悄塌慎个集合,包含对应此watch的所有event handler:
https://pythonhosted.org/watchdog/
https://blog.csdn.net/chdhust/article/details/50514391
差不多懂启敬了=。=可以写一个文件监控了=。=只要继承一下 FileSystemEventHandler 然后重写一下函数就行了
github: https://github.com/woadsl1234/FileMonitor
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)