2013-07-19 109 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()