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

Python中利用watchdog.observersObserver()监控文件夹中新文件的创建

发布时间:2024-01-10 15:24:57

watchdog是一个用于监控文件系统事件的Python库,可以用于监听文件夹中的文件创建、修改、删除等事件。其中,watchdog.observers.Observer()是一个用于创建和管理观察者的对象,可以通过它来监控指定文件夹中新文件的创建。

下面是一个使用watchdog监控文件夹中新文件创建的示例代码:

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

# 创建一个事件处理器类,用以定义文件系统事件的处理方法
class MyHandler(FileSystemEventHandler):
    def on_created(self, event):
        if not event.is_directory:  # 只处理文件创建事件,排除文件夹的创建
            print(f"{event.src_path} has been created!")  # 打印出新文件的路径

if __name__ == "__main__":
    path = "/path/to/folder"  # 要监控的文件夹路径
    event_handler = MyHandler()  # 实例化事件处理器对象
    observer = Observer()  # 实例化观察者对象

    observer.schedule(event_handler, path, recursive=False)  # 将事件处理器绑定到观察者对象,并指定要监控的文件夹
    observer.start()  # 启动观察者

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

    observer.join()  # 等待观察者线程结束

以上代码中,MyHandler类继承自FileSystemEventHandler,并重写了on_created方法,用于处理文件创建事件。在MyHandler类的on_created方法中,我们通过event.src_path获取到新文件的路径,并打印出来。

__main__函数中,首先设置要监控的文件夹路径path,然后实例化事件处理器和观察者对象。接下来,将事件处理器绑定到观察者对象,同时指定要监控的文件夹路径和是否递归监控子文件夹。最后,启动观察者对象,并使用try-except块捕获KeyboardInterrupt,以便在按下Ctrl+C时停止观察者对象。最后调用observer.join()方法等待观察者线程结束。

运行以上代码,当监控的文件夹中有新文件被创建时,程序将会打印出新文件的路径。你可以根据实际需求,对新文件做进一步的处理。注意,如果需要监控多个文件夹,可以多次调用observer.schedule方法设置不同的文件夹路径。