您需要子类化,并在分派中做任何您想做的事情:
import sysimport timeimport loggingfrom watchdog.observers import Observerfrom watchdog.events import LoggingEventHandlerclass Event(LoggingEventHandler): def dispatch(self, event): print("Foobar")if __name__ == "__main__": logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(message)s', datefmt='%Y-%m-%d %H:%M:%S') path = sys.argv[1] if len(sys.argv) > 1 else '.' event_handler = Event() observer = Observer() observer.schedule(event_handler, path, recursive=True) observer.start() try: while True: time.sleep(1) except KeyboardInterrupt: observer.stop() observer.join()如果运行该代码,则
Foobar每当检测到更改时都会看到输出,要忽略文件,您可能需要使用[events.PatternMatchingEventHandler]
[1]。每种都有各种方法
要在某物被修改的情况下做某事,我们可以重写
on_modified:
class Event(LoggingEventHandler): def on_modified(self, event): print("Doh")使用上面的类和
event_handler = Event()并更改文件来运行代码将输出如下内容:
DohDohDohDohDohDohDoh2015-10-03 15:33:55 - Created file: ./test.txt___jb_bak___2015-10-03 15:33:55 - Moved file: from ./test.txt to ./test.txt___jb_old___2015-10-03 15:33:55 - Moved file: from ./test.txt___jb_bak___ to ./test.txt2015-10-03 15:33:55 - Deleted file: ./test.txt___jb_old___Doh
[1]:您可以覆盖http://pythonhosted.org/watchdog/api.html#watchdog.events.PatternMatchingEventHandler
EventHandler类,这完全取决于您要执行的操作。该
LoggingEventHandler班itslef是的子类
watchdog.events.FileSystemEventHandler:
class watchdog.events.FileSystemEventHandler 基础:对象
base file system event handler that you can override methods from.
dispatch(event)将事件 调度到适当的方法。
Parameters: event (FileSystemEvent) – The event object representing the file system event.
on_any_event(event) 捕获所有事件处理程序。
Parameters: event (FileSystemEvent) – The event object representing the file system event.
on_created(event) 在创建文件或目录时调用。
Parameters: event (DirCreatedEvent or FileCreatedEvent) – Event representing file/directory creation.
on_deleted(event) 删除文件或目录时调用。
Parameters: event (DirDeletedEvent or FileDeletedEvent) – Event representing file/directory deletion.
on_modified(event) 修改文件或目录时调用。
Parameters: event (DirModifiedEvent or FileModifiedEvent) – Event representing file/directory modification.
on_moved(event) 在移动或重命名文件或目录时调用。
Parameters: event (DirMovedEvent or FileMovedEvent) – Event representing file/directory movement.



