小编Jef*_*Leo的帖子

Python watchdog:如何处理被监视的目录被删除?

我很高兴使用 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()
Run Code Online (Sandbox Code Playgroud)

要明白我的意思,请将现有目录作为参数传递,然后将其删除。

python python-watchdog

5
推荐指数
1
解决办法
3305
查看次数

标签 统计

python ×1

python-watchdog ×1