欢迎访问宙启技术站
智能推送

利用watchdog.observersObserver()模块监控Python文件夹变化

发布时间:2024-01-10 15:22:14

使用watchdog.observers模块可以监控Python文件夹中的文件和文件夹的变化,包括创建、修改、删除等操作。下面是一个使用watchdog.observers模块监控Python文件夹变化的例子。

首先,首先需要安装watchdog库:

pip install watchdog

然后,我们可以使用如下代码来监控文件夹的变化:

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

class MyHandler(FileSystemEventHandler):
    def on_modified(self, event):
        print(f'event type: {event.event_type}  path: {event.src_path}')

if __name__ == "__main__":
    # 监控的文件夹路径
    path = sys.argv[1] if len(sys.argv) > 1 else '.'
    
    event_handler = MyHandler()
    observer = Observer()
    observer.schedule(event_handler, path, recursive=True)
    observer.start()

    try:
        while True:
            time.sleep(1)
    except KeyboardInterrupt:
        observer.stop()
    observer.join()

在上面的代码中,我们定义了一个继承自FileSystemEventHandler的自定义处理类MyHandler,重写了on_modified方法。当有文件或文件夹被修改时,该方法将被调用,并打印出事件类型和路径。

然后在主函数中,我们获取用户输入的文件夹路径(如果没有输入,默认为当前路径),创建了一个MyHandler和一个Observer对象。通过调用Observer的schedule方法来注册要监控的文件夹和事件处理类,recursive参数表示是否递归监控子文件夹。

最后,通过调用Observer的start方法启动监控,然后进入一个无限循环中,每隔1秒钟检查一次事件。如果用户按下了键盘中断(Ctrl+C),则停止监控,调用Observer的stop方法,最后调用Observer的join方法等待监控线程退出。

使用该脚本时,可以通过命令行参数指定要监控的文件夹路径,例如:

python monitor_folder.py /path/to/folder

当该文件夹中的任何文件或文件夹被修改时,脚本将会打印出对应的事件类型和路径。可以根据实际需要修改on_modified方法中的代码,实现具体的处理逻辑。

上述代码只是一个简单的例子,watchdog.observers模块还提供了其它的事件处理方式和方法,可以根据实际需求进行扩展和使用。