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方法设置不同的文件夹路径。
