1from __future__ import annotations 2 3import logging 4import sys 5import time 6 7from watchdog import events 8from watchdog.observers import Observer 9 10logging.basicConfig(level=logging.DEBUG) 11 12 13class MyEventHandler(events.FileSystemEventHandler): 14 def catch_all_handler(self, event: events.FileSystemEvent) -> None: 15 logging.debug(event) 16 17 def on_moved(self, event: events.DirMovedEvent | events.FileMovedEvent) -> None: 18 self.catch_all_handler(event) 19 20 def on_created(self, event: events.DirCreatedEvent | events.FileCreatedEvent) -> None: 21 self.catch_all_handler(event) 22 23 def on_deleted(self, event: events.DirDeletedEvent | events.FileDeletedEvent) -> None: 24 self.catch_all_handler(event) 25 26 def on_modified(self, event: events.DirModifiedEvent | events.FileModifiedEvent) -> None: 27 self.catch_all_handler(event) 28 29 def on_closed(self, event: events.FileClosedEvent) -> None: 30 self.catch_all_handler(event) 31 32 def on_closed_no_write(self, event: events.FileClosedNoWriteEvent) -> None: 33 self.catch_all_handler(event) 34 35 def on_opened(self, event: events.FileOpenedEvent) -> None: 36 self.catch_all_handler(event) 37 38 39path = sys.argv[1] 40 41event_handler = MyEventHandler() 42observer = Observer() 43observer.schedule(event_handler, path, recursive=True) 44observer.start() 45try: 46 while True: 47 time.sleep(1) 48finally: 49 observer.stop() 50 observer.join() 51