2017-11-05 5 views
0

수정을 위해 특정 로그 파일을 감시하는 스크립트를 작성하려고하지만 모든 .txt 파일을 볼 수 없습니다. 그것은 다른 유형의 파일과 잘 작동합니다. 나는 평 파일에 file_to_watch 설정Python Watchdog - src_path inconsistent

from watchdog.observers import Observer 
from watchdog.events import FileSystemEventHandler 
from os.path import expanduser 

file_to_watch = 'test.txt' 

class FileModifiedHandler(FileSystemEventHandler): 

    def __init__(self, path, file_name, callback): 
     self.file_name = file_name 
     self.callback = callback 

     self.observer = Observer() 
     self.observer.schedule(self, path, recursive=False) 
     self.observer.start() 
     self.observer.join() 

    def on_modified(self, event): 

     print "Event: %s" % (event) 
     print "Ends with %s: %s" % (self.file_name, event.src_path.endswith(self.file_name)) 

     if not event.is_directory and event.src_path.endswith(self.file_name): 
      self.callback() 

if __name__ == '__main__': 


    def callback(): 
     print("FILE WAS MODIFIED") 

    FileModifiedHandler('.', file_to_watch, callback) 

는 로그가 올바른 소스 경로를 반환하지만이 같은 폴더에 .txt 파일로 변경하는 경우,이 디렉토리에서 멈 춥니 다. 이 이유가 무엇인지 모르겠습니다. 여기에 어떤 프로그램 반환 :

Event: <FileModifiedEvent: src_path='/Users/nick/Documents/Python/WatchdogTest.py'> 
Ends with WatchdogTest.py: True 
FILE WAS MODIFIED 

Event: <DirModifiedEvent: src_path='/Users/nick/Documents/Python'> 
Ends with test.txt: False 

답변

0

당신이 다른 이름으로 파일 test.txt 이름을 바꿀 수는/t 다르게 처리 또는 바이 패스 이스케이프 시퀀스를 추가 할 수있을 수 있습니다 같은 느낌 mytest.txt 말한다.

+0

문제가 해결되었습니다. TextEdit (Mac의 경우)에서 코드를 변경하여 코드를 테스트했지만, 다른 텍스트 편집기 (Brackets를 사용)에서 수정하면 코드가 작동하기 시작했습니다. TextEdit은 기존 파일을 수정하는 대신 새 파일을 저장합니까? –