监控文件系统事件的Python库和shell工具:watchdog

jopen 10年前

watchdog提供了Python API和shell工具集来监控文件系统的事件。它包含跨平台的API,一个shell工具可以让你运行命令来监控目录的变化。

以下是一个使用watchdog来监控目录变化的的简单程序,当事件发生的时候记录日志:

import sys  import time  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 True:              time.sleep(1)      except KeyboardInterrupt:          observer.stop()      observer.join()

watchdog包含一个实用的脚本,名为watch demo。使用watchdog —helpming’l命令可以查看更多关于这个脚本的信息。

以下是一个监控*.py和*.txt文件的变化,记录到日志而忽略其他目录中文件变化的脚本:

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

可以使用shell-command子命令来执行shell命令:

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

项目主页:http://www.open-open.com/lib/view/home/1404378150249