我很高兴使用watchdog包,特别是PollingObserver来监视目录中的文件事件。它工作得很好-直到我正在看的目录被删除。然后发生的是轮询目录的代码对不存在的目录调用stat(),并引发异常。最好的办法是什么?我不知道如何捕捉这个异常,因为它在一个单独的线程中。在
样本代码:
import sys
import time
import logging
from watchdog.observers.polling import PollingObserver
from watchdog.events import LoggingEventHandler
if __name__ == "__main__":
logging.basicConfig(level=logging.INFO,
format='%(asctime)s - %(message)s',
datefmt='%Y-%m-%d %H:%M:%S')
path = sys.argv[1] if len(sys.argv) > 1 else '.'
event_handler = LoggingEventHandler()
observer = PollingObserver()
print("Watching: ", path)
observer.schedule(event_handler, path, recursive=True)
observer.start()
try:
while True:
time.sleep(1)
except keyboardInterrupt:
observer.stop()
observer.join()
要了解我的意思,请将现有目录作为参数传递,然后将其删除。在
我遇到了以下问题,我的解决方案是创建一个自定义发射器,在自定义观察者中使用它,然后使用这个观察者。在
发射器代码:
观察员代码:
^{pr2}$另外,如您所见,如果您不需要日志记录,您可以将原始计划保留在Observer中,并只覆盖\uuuinit\u
相关问题 更多 >
编程相关推荐