3

我打算使用 Python 看门狗来处理写入文件的目录,我只对图像文件感兴趣,麻烦的是我不太了解这个页面上的代码。这是我的尝试:

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

class Beat(PatternMatchingEventHandler):
     def on_create(self,event):
             print event.src_path

if __name__ == "__main__":
    patt = ['\w+[.]jpeg']
    event_handler = Beat(patterns=patt,ignore_directories=True,) 
    observer = Observer()
    path = "./"
    observer.schedule(event_handler, path, recursive=True)
    observer.start()

我正在尝试使用模式匹配类,但我什么也没得到。它应该如何使用?

4

2 回答 2

2

根据源代码fnmatch正在后台使用。fnmatch只能进行 UNIX glob 样式的模式匹配。这意味着你可能*.jpg\w+[.]jpeg

于 2013-07-19T22:00:55.083 回答
2

您实际上可以使用 RegexMatchingEventHandler 而不是 PatternMatchingEventHandler 来完成您想要做的事情:

from watchdog.observers import Observer
from watchdog.events import RegexMatchingEventHandler  

class ExampleHandler(RegexMatchingEventHandler):
     def on_create(self, event):
             print(event.src_path)

if __name__ == "__main__":
    pattern = '\w+\.jpeg'
    event_handler = ExampleHandler(regexes=[pattern], ignore_directories=True) 
    observer = Observer()
    path = "./"
    observer.schedule(event_handler, path, recursive=True)
    observer.start()
    import time
    try:
        while True:
            time.sleep(1)
    except KeyboardInterrupt:
        observer.stop()

    observer.join()
于 2016-05-18T18:04:39.020 回答