2017-06-23 161 views
0

私は、Pythonのウォッチドッグモジュールを使用してファイルシステムの変更を聞き取ろうとしています。私は2つの異なるディレクトリからファイルを監視したい。 1つのファイルウォッチについては、PatternMatchingEventHandlerwatchdog.eventsから使用しました。私は複数のディレクトリに同じものを使用したい。2つの異なるディレクトリにあるファイルのPythonウォッチドッグ

コード:上記のコードで

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

class EventHandler(PatternMatchingEventHandler): 
    def on_modified(self, event): 
     super(EventHandler, self).on_modified(event) 
     print event 

if __name__ == "__main__": 
    dir_name = ["/home/user1/first", "/home/user1/second"] 
    observer = Observer() 
    patterns = ["/home/user1/first/first.log","/home/user1/second/second.log")] 
    for i in xrange(len(dir_name)): 
     event_handler = EventHandler(patterns = patterns[i]) 
     observer.schedule(event_handler, dir_name[i], recursive=True) 
    observer.start() 

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

、私は複数のディレクトリ観測フォーマットを行うと、ファイルごとにイベントハンドラを作成しようとしました。それは私のために働いていない。私がここで紛失しているものはありますか?これを行う方法は何ですか?

ありがとうございました。

答えて

-1

私と比較すると、あなたはEOFにobserver.join()がありません。それを試してみてください。それはそれで作業していない

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

class EventHandler(PatternMatchingEventHandler): 
    def on_modified(self, event): 
     super(EventHandler, self).on_modified(event) 
     print event 

if __name__ == "__main__": 
    observer = Observer() 
    patterns = ["/home/user1/first/first.log","/home/user1/second/second.log"] 
    for pattern in patterns: 
     event_handler = EventHandler(patterns=pattern) 
     observer.schedule(event_handler, dir_name[i], recursive=True) 
    observer.start() 

    try: 
     while True: 
      time.sleep(0.1) 
    except KeyboardInterrupt: 
     observer.stop() 
    observer.join() 
+0

EDIT

は、以下のこのコードを試してみてください。それはどのように役立つでしょうか? – wonder

+0

私が知っているところでは、コードと呼ばれるスレッドをブロックするので、プログラムは終了するまで(この場合はCtrl-Cで)無期限に実行されます。詳細はこちら[こちら](http://pythonhosted.org/watchdog/api.html#watchdog.utils.BaseThread.join)。それは黒い画面として目立つことに注意してください:プログラムが動作するかどうかを見ることができるようにいくつかの変更を加えます(出力されます)。 – RompePC

+0

それは正しいです。しかし、ファイルが両方のディレクトリで定期的に変更されても、何も印刷されません。すべてのオブザーバースケジューラーに対して 'join()'を実行しようとしました。しかし、それは私を助けていない。 – wonder

関連する問題