Add an echo module that lets me trace calls

Signed-off-by: Gora Khargosh <gora.khargosh@gmail.com>
1 file changed
tree: e367c71ce56c0148d257e3f5bc651dab863b7707
  1. doc/
  2. watchdog/
  3. .gitignore
  4. AUTHORS
  5. bootstrap
  6. bootstrap.py
  7. buildout.cfg
  8. LICENSE
  9. MANIFEST.in
  10. README.md
  11. setup.py
  12. watchmedo
  13. watchmedo.bat
README.md

Watchdog

Python API and shell utilities to monitor file system events.

Example API Usage:

A simple program that uses watchdog to monitor directories specified as command-line arguments and logs events generated.

import sys
import time
from watchdog import Observer
from watchdog.events import FileSystemEventHandler
import logging

logging.basicConfig(level=logging.DEBUG)

class MyEventHandler(FileSystemEventHandler):
    def catch_all_handler(self, event):
        logging.debug(event)

    def on_moved(self, event):
        self.catch_all_handler(event)

    def on_created(self, event):
        self.catch_all_handler(event)

    def on_deleted(self, event):
        self.catch_all_handler(event)

    def on_modified(self, event):
        self.catch_all_handler(event)


event_handler = MyEventHandler()
observer = Observer()
observer.schedule('a-unique-name', event_handler, sys.argv[1:], recursive=True)
observer.start()
try:
    while True:
        time.sleep(1)
except KeyboardInterrupt:
    observer.unschedule('a-unique-name')
    observer.stop()
observer.join()

Shell Utilities:

Watchdog comes with a utility script called watchmedo. Please type watchmedo --help at the shell prompt to know more about this tool.

Here is how you can log the current directory recursively for events related only to *.py and *.txt files while ignoring all directory events:

watchmedo log --patterns="*.py;*.txt" --ignore-directories --recursive .

If you'd like to execute shell commands in response to events you can use the shell-command subcommand like this:

watchmedo shell-command --patterns="*.py;*.txt" --recursive --command='echo "${watch_src_path}"' .

Please see the help information for these commands by typing:

watchmedo [command] --help

Installation:

Installing from PyPI using pip:

pip install watchdog

Installing from PyPI using easy_install:

easy_install watchdog

Installing from source:

python setup.py install

Supported Platforms:

  • Linux 2.6 (inotify)
  • Mac OS X (FSEevnts, kqueue)
  • FreeBSD/BSD (kqueue)
  • Windows (ReadDirectoryChangesW with I/O completion ports; ReadDirectoryChangesW worker threads)
  • OS-independent (polling the disk for directory snapshots and comparing them periodically; slow and not recommended)

Dependencies:

  1. Python 2.5 or above.
  2. pywin32 (only on Windows)
  3. pyinotify (only on Linux)
  4. XCode or gcc (only on Mac OS X)
  5. PyYAML
  6. argh
  7. select_backport (select.kqueue replacement for Python2.5/2.6 on BSD/Mac OS X)

Licensing:

Watchdog is licensed under the terms of the MIT License

Copyright (C) 2010 Gora Khargosh <gora.khargosh@gmail.com> and the Watchdog authors.

Project source code at Github

Please report bugs at the Github issue tracker.