이 작업을 해결하기 위해이 http://brunorocha.org/python/watching-a-directory-for-file-changes-with-python.html 예제를 사용했습니다. 그리고 효과가있었습니다. OOP를 사용하지 않은 경우. 이제, 내가 무슨 짓을했는지, OOP에 내 코드를 다시 작성하는 것을 시도하고있다 : 나는 이름 MyHandler.py파이썬에서 파일 변경을위한 디렉토리를 보지 못했습니다.
#!/usr/bin/python3
# -*- coding: utf-8 -*-
import sys
from watchdog.events import PatternMatchingEventHandler
class MyHandler(PatternMatchingEventHandler):
patterns = ["*.xml", "*.lxml"]
def __init__(self, logger, myfunction):
self.logger = logger
self.myfunction = myfunction
def process(self, event):
"""
event.event_type
'modified' | 'created' | 'moved' | 'deleted'
event.is_directory
True | False
event.src_path
path/to/observed/file
"""
self.logger.debug("target: {} was {}".format(event.src_path, event.event_type))
self.myfunction()
def on_created(self, event):
self.process(event)
다음, 나는의 읽기 기능이 어디 내 다른 파일이 호출 오전에 파일을 생성 XML :
observer = Observer()
observer.schedule(MyHandler(self.logger, self.read_xml), path=self.mydir)
observer.start()
try:
while True:
time.sleep(1)
except KeyboardInterrupt:
observer.stop()
observer.join()
그리고, 내가 가지고이 전화를 시도하고있다 :
내가 오류가AttributeError: 'MyHandler' object has no attribute '_ignore_directories'
? OOP 실험을하기 전에 :
class MyHandler(PatternMatchingEventHandler):
patterns = ["*.xml*", "*.lxml"]
def process(self, event):
"""
event.event_type
'modified' | 'created' | 'moved' | 'deleted'
event.is_directory
True | False
event.src_path
path/to/observed/file
"""
logger.debug("Target: {} was {}".format(event.src_path, event.event_type))
read_xml()
def on_created(self, event):
self.process(event)
if __name__ == "__main__"
observer = Observer()
observer.schedule(MyHandler(), path=mydir)
observer.start()
try:
while True:
time.sleep(1)
except KeyboardInterrupt:
observer.stop()
observer.join()
그리고 그것은 효과가있었습니다. 이제 스크립트가 작동하지 않습니다. 도와주세요.