我需要暂停功能,因此我使用以下观察者:import time
import contextlib
import watchdog.observers
class PausingObserver(watchdog.observers.Observer):
def dispatch_events(self, *args, **kwargs):
if not getattr(self, '_is_paused', False):
super(PausingObserver, self).dispatch_events(*args, **kwargs)
def pause(self):
self._is_paused = True
def resume(self):
time.sleep(self.timeout) # allow interim events to be queued
self.event_queue.queue.clear()
self._is_paused = False
@contextlib.contextmanager
def ignore_events(self):
self.pause()
yield
self.resume()
然后,我可以直接用pause()和resume()方法暂停观察者,但我的主要用例是当我只想忽略由于写入我正在监视的目录而引起的任何事件时,我使用上下文管理器:
^{pr2}$
您可以通过将两个代码块保存在一个文件中,运行它,并在创建的'watchdir'目录中添加/编辑/删除文件来测试这一点。修改的时间戳将附加到'watchdir'后面/修改.log'. 在