inotify监控文件,并在收到文件变化通知后调用回调,代码示例
时间: 2024-09-19 12:07:56 浏览: 41
Inotify是Linux系统提供的一种功能强大的文件系统事件监测工具,它允许用户在文件或目录发生变化时接收到通知。在Python中,我们可以利用`inotify`库来实现这个功能。这里有一个简单的例子:
```python
import os
import inotify.adapters
class FileMonitor:
def __init__(self):
self.inot = inotify.adapters.Inotify()
self.watch_path = '/path/to/watch'
def start_monitor(self):
# 注册对指定路径的监听
self.inot.add_watch(self.watch_path)
for event in self.inot.event_gen(yield_nones=False):
(_, type_names, path, filename) = event
if 'IN_MODIFY' in type_names: # 文件修改事件
print(f"File '{filename}' in '{path}' has been modified.")
self.callback(path, filename) # 调用自定义的回调函数
def set_callback(self, callback):
self.callback = callback
# 使用示例
def file_change_handler(path, filename):
print(f"Handling file change: {path}/{filename}")
monitor = FileMonitor()
monitor.set_callback(file_change_handler)
monitor.start_monitor()
```
在这个例子中,我们创建了一个`FileMonitor`类,它启动一个`Inotify`实例并监视给定路径。当文件发生修改时,会触发`IN_MODIFY`事件,然后调用预设的`callback`方法。