通过watchdog监听C:\sui\event\m文件夹下的变化,无论是m\a\index.html变化,还是m\a\pc\index.html变化,我一直都想拿到把a这个目录放到一个list里
时间: 2023-08-12 15:07:31 浏览: 121
如果你想通过watchdog监听`C:\sui\event\m`文件夹下的变化,并且无论是`m\a\index.html`还是`m\a\pc\index.html`的变化,都希望将`a`这个目录放入一个列表中,你可以在事件处理程序中使用`os.path.dirname()`方法来获取父级目录。
以下是一个示例代码片段,演示了如何通过watchdog将`a`目录放入一个列表中:
```python
import os
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
class MyHandler(FileSystemEventHandler):
def __init__(self):
self.directory_list = []
def on_modified(self, event):
# 获取父级目录
parent_directory = os.path.dirname(event.src_path)
# 提取目录名
directory_name = os.path.basename(parent_directory)
# 将目录名添加到列表中
self.directory_list.append(directory_name)
# 打印列表
print(f"Directory list: {self.directory_list}")
# 创建一个Observer对象并启动监听
observer = Observer()
event_handler = MyHandler()
observer.schedule(event_handler, path='C:\\sui\\event\\m', recursive=True)
observer.start()
try:
while True:
time.sleep(1)
except KeyboardInterrupt:
observer.stop()
observer.join()
```
在上述代码中,我们在事件处理程序的`on_modified`方法中使用`os.path.dirname()`方法获取父级目录,然后使用`os.path.basename()`方法提取目录名。将目录名添加到`self.directory_list`列表中,并在每次修改事件发生时打印列表。
请确保在`observer.schedule()`方法中设置正确的监听路径(即`C:\sui\event\m`),以便正确监听文件夹下的变化。
希望这能解决你的问题!如果还有其他疑问,请随时提问。
阅读全文