监听文件变化的Python代码示例(watchdog.observersObserver())
发布时间:2024-01-10 15:17:37
要监听文件变化,可以使用Python的watchdog库。watchdog是一个用于监视文件系统事件并发出通知的库,可在文件或目录上监听事件,如创建、删除、修改和重命名。下面是一个使用watchdog.observers.Observer()的示例代码:
import time
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
# 定义一个继承自FileSystemEventHandler的类,用于处理文件系统事件
class MyHandler(FileSystemEventHandler):
def on_modified(self, event):
# 文件被修改时触发此方法
print(f'File modified: {event.src_path}')
# 创建一个Observer对象并实例化一个处理文件系统事件的类
event_handler = MyHandler()
observer = Observer()
observer.schedule(event_handler, path='.', recursive=False)
# 启动Observer对象
observer.start()
try:
while True:
# 每隔1秒检查一次事件
time.sleep(1)
except KeyboardInterrupt:
# 按下Ctrl+C时停止监听并退出程序
observer.stop()
# 等待Observer线程结束
observer.join()
在示例中,首先我们定义了一个继承自FileSystemEventHandler的类MyHandler,该类重写了on_modified方法,用于处理文件被修改的事件。然后,我们创建了一个Observer对象和一个MyHandler对象,并将MyHandler对象与Observer对象关联起来。接着,启动Observer对象,并使用一个while循环来检查事件的发生。当按下Ctrl+C时,我们停止监听并退出程序。
可以根据实际需求更改事件处理方法,例如on_created处理文件创建事件,on_deleted处理文件删除事件等。
使用示例:
假设我们有一个名为test.txt的文件。运行上述代码后,如果我们在命令行中对test.txt进行修改,我们将看到类似于以下的输出:
File modified: ./test.txt
这表明文件被修改了。除了on_modified事件外,您还可以尝试其他事件,并根据需要进行处理。
