如何利用 pyinotify 在一个python脚本中,监控多个路径
时间: 2024-02-01 11:15:24 浏览: 219
可以使用pyinotify中的WatchManager来监控多个路径,具体步骤如下:
1. 创建WatchManager对象并实例化一个Notifier对象。
```
import pyinotify
wm = pyinotify.WatchManager()
notifier = pyinotify.Notifier(wm)
```
2. 为每个要监控的路径创建一个ProcessEvent子类,并在类的process_IN_MODIFY方法中定义响应逻辑。
```
class EventHandler(pyinotify.ProcessEvent):
def __init__(self, path):
self.path = path
def process_IN_MODIFY(self, event):
print("File modified:", event.pathname)
```
3. 将每个路径和其对应的ProcessEvent子类实例添加到WatchManager中。
```
paths = ['/path/to/dir1', '/path/to/dir2', '/path/to/dir3']
for path in paths:
wm.add_watch(path, pyinotify.IN_MODIFY, rec=True, auto_add=True, event_class=EventHandler)
```
其中,add_watch方法的参数说明如下:
- path:要监控的路径。
- pyinotify.IN_MODIFY:要监控的事件类型(这里是文件修改事件)。
- rec=True:递归地监控子目录。
- auto_add=True:自动添加新创建的子目录。
- event_class=EventHandler:要使用的ProcessEvent子类。
4. 启动Notifier对象,开始监控。
```
notifier.loop()
```
完整代码示例:
```
import pyinotify
class EventHandler(pyinotify.ProcessEvent):
def __init__(self, path):
self.path = path
def process_IN_MODIFY(self, event):
print("File modified:", event.pathname)
wm = pyinotify.WatchManager()
notifier = pyinotify.Notifier(wm)
paths = ['/path/to/dir1', '/path/to/dir2', '/path/to/dir3']
for path in paths:
wm.add_watch(path, pyinotify.IN_MODIFY, rec=True, auto_add=True, event_class=EventHandler(path))
notifier.loop()
```
阅读全文