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