监控文件系统事件的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}"' \ .