Python文件监控应使用watchdog库而非轮询,因其基于系统原生事件、跨平台且高效;核心事件包括on_created、on_deleted、on_modified、on_moved,生产环境需注意异常隔离、路径安全与资源释放。
Python文件监控的核心是实时捕获文件系统的变化,比如新建、修改、删除、重命名等事件。不依赖轮询(避免资源浪费),推荐使用操作系统原生事件接口——watchdog库是最成熟、跨平台(Windows/macOS/Linux)、轻量且稳定的方案。
轮询看似简单,但存在明显缺陷:
安装后,三步即可运行一个基础监控器:
pip install watchdog示例代码(监听当前目录下所有.py文件的修改):
from watchdog.observers import Observer from watchdog.events import FileSystemEventHandler
class PyChangeHandler(FileSystemEventHandler): def on_modified(self, event): if event.is_directory: return if event.src_path.endswith('.py'): print(f"检测到Python文件变更:{event.src_path}")
observer = Observer() observer.schedule(PyChangeHandler(), path='.', recursive=True) observer.start()
try: while True: pass # 运行中... except KeyboardInterrupt: observer.stop() observer.join()
watchdog将变化分为四类基础事件,但真实场景需组合判断:
event.src_path → event.dest_path)实用建议:
on_modified,但加0.1秒延时去重(防编辑器多阶段写入)on_modified + 检查文件大小是否稳定(连续两次变化间隔>100ms再处理)直接跑在脚本里适合调试,上线需考虑健壮性:
try...except,防止单个错误中断整个监听os.path.abspath()标准化监听路径,避免软链接或相对路径歧义observer.stop()和observer.join(),尤其在信号退出(SIGINT/SIGTERM)时