Python实现的watchdog.events.FileSystemEventHandler():监听文件系统事件的示例代码
watchdog是一个Python的文件系统监控库,可以监听文件系统的变化,并相应地执行指定的动作。watchdog.events.FileSystemEventHandler是它的一个事件处理器类,用于处理文件系统事件。
首先,确保已经安装了watchdog库,可以通过pip命令进行安装:
pip install watchdog
下面是一个使用watchdog.events.FileSystemEventHandler监听文件系统事件的示例代码:
import time
from watchdog.events import FileSystemEventHandler
from watchdog.observers import Observer
class MyHandler(FileSystemEventHandler):
def on_modified(self, event):
if not event.is_directory:
print(f'文件被修改:{event.src_path}')
def on_created(self, event):
if not event.is_directory:
print(f'文件被创建:{event.src_path}')
def on_deleted(self, event):
if not event.is_directory:
print(f'文件被删除:{event.src_path}')
def on_moved(self, event):
if not event.is_directory:
print(f'文件被移动:{event.src_path} -> {event.dest_path}')
if __name__ == "__main__":
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(event):当文件被修改时触发。
- on_created(event):当文件被创建时触发。
- on_deleted(event):当文件被删除时触发。
- on_moved(event):当文件被移动时触发。
可根据实际需求决定重载的方法。这些方法中的event参数包含了相关的文件信息,通过event可以获取事件发生的文件路径。
在主程序中,创建了一个MyHandler实例event_handler,并创建了一个Observer实例observer。通过调用observer的schedule方法指定要监听的文件夹路径,并将event_handler作为参数传入。
最后,调用observer的start方法开始监听文件系统事件。进入主循环,通过time.sleep(1)方法保持程序运行。当检测到键盘中断(按下Ctrl+C)时,通过observer.stop()方法停止监听,并调用observer.join()方法等待所有的子进程结束。
可以根据需要修改代码中相关的打印语句,以适应不同的需求。例如,可以在文件被修改时调用具体的函数进行处理,或者发送通知等等。
注意:需要将<要监听的文件夹路径>替换为实际要监听的文件夹路径。
