2013-07-19 79 views
3

我打算使用Python看门狗来处理文件被写入的目录, ,我只对图像文件感兴趣,麻烦是我不太喜欢在代码this page。 这是我的尝试:如何只匹配特定的事件与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() 

我试图使用模式匹配的类,但我却一无所获。它应该如何使用?

回答

2

基于source code,fnmatch正在引擎盖下使用。 fnmatch只能做UNIX glob风格的模式匹配。这意味着你可能比*.jpg有更好的运气比\w+[.]jpeg

+0

你的权利,我自己看看代码。 – mike

1

如果你真的需要使用正则表达式,下面的代码可能会帮助你。

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

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

if __name__ == "__main__": 
    patt = ['\w+\.jpeg'] 
    event_handler = Beat(regexes=patt,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()