Quickstart¶
Below we present a simple example that monitors the current directory recursively (which means, it will traverse any sub-directories) to detect changes. Here is what we will do with the API:
Create an instance of the
watchdog.observers.Observer
thread class.Implement a subclass of
watchdog.events.FileSystemEventHandler
(or as in our case, we will use the built-inwatchdog.events.LoggingEventHandler
, which already does).Schedule monitoring a few paths with the observer instance attaching the event handler.
Start the observer thread and wait for it generate events without blocking our main thread.
By default, an watchdog.observers.Observer
instance will not monitor
sub-directories. By passing recursive=True
in the call to
watchdog.observers.Observer.schedule()
monitoring
entire directory trees is ensured.
A Simple Example¶
The following example program will monitor the current directory recursively for file system changes and simply log them to the console:
import sys
import logging
from watchdog.observers import Observer
from watchdog.events import LoggingEventHandler
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 = LoggingEventHandler()
observer = Observer()
observer.schedule(event_handler, path, recursive=True)
observer.start()
try:
while observer.is_alive():
observer.join(1)
finally:
observer.stop()
observer.join()
To stop the program, press Control-C.