2013-09-03 2 views
32

여러분, 변경 사항을 로그 파일로 볼 필요가 있습니다. stackoverflow 질문을보고 나서, 나는 '워치 독'을 추천하는 사람들을 만난다. 그래서 내가 테스트를 위해 노력하고, 파일이 변경 될 때의 코드를 추가 할 경우 확실하지 않다 해요 : 내가 파일이 추가 된 경우가 while 루프에서, "그것을 가지고"추가 할python watchdog 모니터링 파일 변경

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

를/변경 되었습니까?

감사합니다. 파일이나 디렉토리가 수정 될 때

#!/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가 호출 대신 LoggingEventHandler

+0

예제를 github – Cmag

+0

에서 사용하면 github의 예제가 여전히 작동하지 않습니다. – Deqing

답변

64

은 핸들러를 정의합니다.

+1

훌륭합니다, 감사합니다! 이제 어떻게 특정 파일을보고 전체 디렉토리를 볼 수 있습니까? – Cmag

+2

당신은 오신 것을 환영합니다. 파일이 들어있는 디렉토리를 살펴보고 핸들러 메소드에서'event.src_path' 변수를 확인하십시오. – alecxe

+0

그리고 더하기, 특정 [event] (http://pythonhosted.org/watchdog/api.html#event-classes)를 볼 수 있습니다. – alecxe