2013-09-03 15 views
32

Milletler, Değişiklikler için bir günlük dosyası izlemem gerekiyor. Stackoverflow sorularını inceledikten sonra 'watchdog' öneren kişileri görüyorum. Bu yüzden sınıyor ve dosyalar değiştiğinde için kod eklemek nerede emin değilim: Ben dosyalarını eklenmesi halinde iken döngü içinde, "anladım" eklerimpython watchdog değişiklikleri için izleme dosyası

#!/usr/bin/python 
import time 
from watchdog.observers import Observer 
from watchdog.events import LoggingEventHandler 

if __name__ == "__main__": 
event_handler = LoggingEventHandler() 
observer = Observer() 
observer.schedule(event_handler, path='.', recursive=False) 
observer.start() 
try: 
    while True: 
     time.sleep(1) 
    else: 
     print "got it" 
except KeyboardInterrupt: 
    observer.stop() 
observer.join() 

/değişti?

Teşekkürler! Bir dosya veya dizin modifiye edildiğinde

#!/usr/bin/python 
import time 
from watchdog.observers import Observer 
from watchdog.events import FileSystemEventHandler 


class MyHandler(FileSystemEventHandler): 
    def on_modified(self, event): 
     print "Got it!" 


if __name__ == "__main__": 
    event_handler = MyHandler() 
    observer = Observer() 
    observer.schedule(event_handler, path='.', recursive=False) 
    observer.start() 

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

on_modified denir: Yerine LoggingEventHandler ait

+0

github'daki github örneğindeki github – Cmag

+0

örneğinden örneğini kullanmaya devam edin. – Deqing

cevap

64

sizin işleyicisi tanımlar.

+1

Mükemmel, teşekkürler! Şimdi sadece belirli bir dosyayı ve şimdi bütün dizini nasıl izlerim? – Cmag

+2

Bir şey değil. Dosyayı içeren dizini izleyebilir, ardından işleyici yöntemlerinde 'event.src_path' değişkenini kontrol edebilirsiniz. – alecxe

+0

Ayrıca, artı [olayı] izleyebilirsiniz (http://pythonhosted.org/watchdog/api.html#event-classes). – alecxe

İlgili konular