递归观察者看不到所有目录

时间:2019-11-21 15:35:20

标签: python python-3.x python-watchdog

import time
from watchdog.observers import Observer
from watchdog.events import PatternMatchingEventHandler

class MyHandler(PatternMatchingEventHandler):
    def on_created(self, event):
        print(f'event type: {event.event_type}  path : {event.src_path} isdir : {event.is_directory}')


event_handler = MyHandler(patterns=['*'],ignore_patterns=['*.txt'])
observer = Observer()
observer.schedule(event_handler, path='watch/', recursive=True)
observer.start()

try:
    while True:
        time.sleep(1)
except KeyboardInterrupt:
    observer.stop()
observer.join()

我有这个简单的观察程序,其目的是记录所有非.txt的文件或目录。我不确定这是错误还是我不理解的错误。

当我将observer.schedule设置为recursive=True,然后将多个目录(其中包含文件)复制到监视的文件夹中时,将仅记录一个目录及其子文件,而不会触发其他子目录事件处理程序。一个接一个地移动每个目录将分别记录每个目录,问题仅在于多次移动时。我正在使用Windows 10,并且正在移动3个目录,每个目录包含大约10个文件。

如果我更改recursive=False,则所有目录和子文件夹都将正确记录。我真的不知道有什么区别,因为除了上述行为之外,无论子文件是否递归,都会记录子文件。

编辑:

我在watchdogs git上提出了一个问题,并提供了更多详细信息

0 个答案:

没有答案