기대하지 않는 추가 이벤트가 발생하는 문제가 있습니다.폴더를 만들 때 파이썬 워치 독 라이브러리로 여러 이벤트보기
나는 C:\Users\kvasko\Downloads\data
폴더를보고있다. 폴더를 복사하는 경우 2017\07\25\LogFile.xml
다음과 같은 3 개의 "만든"이벤트가 표시됩니다. 1 일 때만 예상됩니다. 미리 날짜 폴더 구조를 만들면 (폴더를보고있는 응용 프로그램이 실행되는 동안) 생성됩니다 내가 기대하는 한 가지 사건. 나는 단지 폴더 생성을위한 이벤트를 얻지 못한다. 그것은 이벤트가 폴더 생성을 위해 생성되는 것과 비슷하지만, 내 on_created(self,event)
에 메시지로 표시된 실제 이벤트를 검사 할 때 세 가지 모양 이벤트가 모두 똑같이 보입니다. 여기서 무슨 일이 일어나고있는거야?
다음은 샘플 출력과 최소 예입니다.
2017-09-22 13:58:10,182 - root - INFO - Watchdog: file created C:\Users\kvasko\Downloads\data\2017\07\25\LogFile.xml
2017-09-22 13:58:11,184 - root - INFO - Watchdog: file created C:\Users\kvasko\Downloads\data\2017\07\25\LogFile.xml
2017-09-22 13:58:12,187 - root - INFO - Watchdog: file created C:\Users\kvasko\Downloads\data\2017\07\25\LogFile.xml
내가 기대 :
2017-09-22 13:58:12,187 - root - INFO - Watchdog: file created C:\Users\kvasko\Downloads\data\2017\07\25\LogFile.xml
폴더 생성로부터 실제로 여러 이벤트 경우 감지 할 수있는 방법이 있나요?
다음은 내 관찰자 구성입니다.
folder = "C:\\Users\\kvasko\\Downloads\\data"
observer = Observer(MyProcessHandler(patterns=["*.xml"]), folder, recursive=True)
observer.start_observer()
os.mkdirs("C:\\Users\\kvasko\\Downloads\\data\\2017\\07\\25")
shutil.copy2("C:\temp\LogFile.xml", "C:\\Users\\kvasko\\Downloads\\data\\2017\\07\\25")
try:
while True:
time.sleep(5)
except:
print("Error")
다음은 내 처리기 클래스입니다.
import logging
from watchdog.events import PatternMatchingEventHandler
class MyProcessHandler(PatternMatchingEventHandler):
def on_created(self, event):
logging.info("Watchdog: file created " + str(event.src_path))
편집 : 여기
는 최소한의 작업 예입니다import time
import os
import shutil
import datetime
from watchdog.observers import Observer
from watchdog.events import PatternMatchingEventHandler
class TestEventHandler(PatternMatchingEventHandler):
def on_created(self, event):
print (str(datetime.datetime.now()) + " " + str(event))
if __name__ == '__main__':
path = "C:\\Temp"
event_handler = TestEventHandler(patterns=["*.xml"])
observer = Observer()
observer.schedule(event_handler, path, recursive=True)
observer.start()
os.makedirs("C:\\Temp\\2017\\07\\25")
shutil.copy2("C:\\Temp2\\2017\\07\\25\\test.xml", "C:\\Temp\\2017\\07\\25")
try:
while True:
time.sleep(1)
except KeyboardInterrupt:
observer.stop()
observer.join()
인쇄 아웃 :
2017-09-22 15:49:51.334262 <FileCreatedEvent: src_path='C:\\Temp\\2017\\07\\25\\test.xml'>
2017-09-22 15:49:52.335468 <FileCreatedEvent: src_path='C:\\Temp\\2017\\07\\25\\test.xml'>
2017-09-22 15:49:53.340998 <FileCreatedEvent: src_path='C:\\Temp\\2017\\07\\25\\test.xml'>
Edit2가 :
이변경 on_created() on_any_event하는 (). 이것은 생산 된 것입니다.
2017-09-23 13:14:57.288792 <FileCreatedEvent: src_path='C:\\Temp\\2017\\07\\25\\test.xml'>
2017-09-23 13:14:58.291327 <FileCreatedEvent: src_path='C:\\Temp\\2017\\07\\25\\test.xml'>
2017-09-23 13:14:59.293334 <FileCreatedEvent: src_path='C:\\Temp\\2017\\07\\25\\test.xml'>
2017-09-23 13:14:59.293334 <FileModifiedEvent: src_path='C:\\Temp\\2017\\07\\25\\test.xml'>
합니까 "LogFile.xml"사본에 2 초가 더 걸리니? –
@LaurentLAPORTE 아니오,이 파일은 100KB 조각과 같습니다. –
@KevinVasko : 실행 가능한 예제가되도록 코드를 수정하면 매우 유용 할 것입니다. – unutbu