说明及介绍
watchdog是一个用于监控文件系统变化的Python库,可以监控文件或目录的创建、修改、删除等操作。watchdog可以通过监听文件系统事件来实时监控文件或目录的变化,当文件系统中的文件或目录发生变化时,watchdog会触发相应的事件,用户可以编写相应的处理逻辑来处理这些事件。
Watchdog的主要特点包括:
1.跨平台性:Watchdog可以在Windows、MacOS和Linux等操作系统上运行。
2.简单易用:Watchdog提供了简单易用的API,用户可以很容易地编写监控文件系统变化的程序。
3.高效性:Watchdog使用底层操作系统提供的API来监控文件系统变化,具有较高的性能和效率。
4.灵活性:用户可以根据自己的需求定制监控逻辑,例如只监控指定类型的文件变化或者排除某些目录。
使用Watchdog可以实现一些应用场景,例如自动化测试、实时数据同步、日志监控等。如果您需要实时监控文件系统的变化并做出相应的处理,可以考虑使用Watchdog这个强大的Python库。
环境
python3.6.8
watchdog 0.9.0
代码
实现代码如下:
import time
from watchdog.events import *
from watchdog.observers import Observer
class FileEventHandler(FileSystemEventHandler):
def __init__(self):
FileSystemEventHandler.__init__(self)
def on_moved(self, event):
if event.is_directory:
print("directory moved from {0} to {1}".format(event.src_path, event.dest_path))
else:
print("file moved from {0} to {1}".format(event.src_path, event.dest_path))
def on_created(self, event):
if event.is_directory:
print("directory created:{0}".format(event.src_path))
else:
print("file created:{0}".format(event.src_path))
def on_deleted(self, event):
if event.is_directory:
print("directory deleted:{0}".format(event.src_path))
else:
print("file deleted:{0}".format(event.src_path))
def on_modified(self, event):
if event.is_directory:
print("directory modified:{0}".format(event.src_path))
else:
print("file modified:{0}".format(event.src_path))
if __name__ == "__main__":
observer = Observer()
event_handler = FileEventHandler()
observer.schedule(event_handler, "./testFile", True)
observer.start()
print('监控当前目录下的文件夹开始:')
try:
while True:
time.sleep(1)
except KeyboardInterrupt:
observer.stop()
observer.join()
使用说明
将以上代码写好后保存成相应的python文件,在该python文件同目录下新建一个测试文件夹,比如命名为“testFile”,然后运行程式即可。
测试
向监控的文件夹下面丢入一张测试图像,运行效果如下: