Skip to content

Monitoring File System Changes (Watchdog)

What watchdog does

watchdogwatchdog lets you react to:

  • file created
  • file modified
  • file deleted

This is useful for:

  • auto-processing new files
  • syncing folders

Example watcher

watchdog_example.py
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
 
 
class Handler(FileSystemEventHandler):
    def on_created(self, event):
        if event.is_directory:
            return
        print("created:", event.src_path)
 
 
if __name__ == "__main__":
    import time
 
    path = "."
    observer = Observer()
    observer.schedule(Handler(), path=path, recursive=True)
    observer.start()
 
    print("watching", path)
    try:
        while True:
            time.sleep(1)
    except KeyboardInterrupt:
        observer.stop()
 
    observer.join()
watchdog_example.py
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
 
 
class Handler(FileSystemEventHandler):
    def on_created(self, event):
        if event.is_directory:
            return
        print("created:", event.src_path)
 
 
if __name__ == "__main__":
    import time
 
    path = "."
    observer = Observer()
    observer.schedule(Handler(), path=path, recursive=True)
    observer.start()
 
    print("watching", path)
    try:
        while True:
            time.sleep(1)
    except KeyboardInterrupt:
        observer.stop()
 
    observer.join()

Notes

  • Install dependency: watchdogwatchdog
  • Keep handlers fast (offload heavy work)

If this helped you, consider buying me a coffee ☕

Buy me a coffee

Was this page helpful?

Let us know how we did