2013-09-03 4 views
32

Люди, мне нужно посмотреть файл журнала для внесения изменений. Просмотрев вопросы stackoverflow, я вижу, что люди рекомендуют «сторожевой таймер». Так что я пытаюсь проверить, и я не уверен, куда добавить код, когда изменения файлов:Файл мониторинга мониторинга python для изменений

#!/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() 

Где я добавляю «получил его», в то время цикла, если были добавлены файлы/изменилось?

Спасибо!

+0

использовать пример из github – Cmag

+0

пример на github все еще не работает. – Deqing

ответ

64

Вместо LoggingEventHandler определить свой обработчик:

#!/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 вызывается, когда файл или каталог изменен.

+1

Отлично, спасибо! Теперь, как я буду смотреть только конкретный файл, а теперь весь каталог? – Cmag

+2

Добро пожаловать. Вы можете посмотреть каталог, содержащий файл, а затем проверить переменную 'event.src_path' в методах обработчика. – alecxe

+0

И, кроме того, вы можете посмотреть конкретное [событие] (http://pythonhosted.org/watchdog/api.html#event-classes). – alecxe