问题描述
我正在使用看门狗来查看是否已创建/删除/移动/修改目录C:\ Temp中的任何文本文件。我希望看门狗只运行10秒钟,然后给我列出“文件夹中发生的情况”的列表,该列表可能会进一步处理。 代码运行正常。但是,有没有更好的解决方案,或者有什么方法可以改善我的代码? 我目前的情况如下:
import time
from watchdog.observers import Observer
from watchdog.events import PatternMatchingEventHandler
class Watcher:
""" Watchdog """
def __init__(self,dir_to_watch,stop_after_seconds=60,patterns=None):
self.dir_to_watch = dir_to_watch
self.observer = Observer()
self.stop_after_seconds = stop_after_seconds
self.patterns = patterns
self.t_start = time.time()
self.output = []
def run(self):
""" Runs watchdog """
event_handler = Handler(self.patterns,self.output)
self.observer.schedule(event_handler,self.dir_to_watch,recursive=True)
self.observer.start()
try:
while True:
time.sleep(1)
if time.time() - self.t_start > self.stop_after_seconds:
self.observer.stop()
print("Watchdog stopped")
break
except KeyboardInterrupt:
self.observer.stop()
print("Watchdog stopped")
self.observer.join()
return self.output
class Handler(PatternMatchingEventHandler):
""" Handler """
def __init__(self,patterns,output):
# Set the patterns for PatternMatchingEventHandler
PatternMatchingEventHandler.__init__(self,patterns=patterns,ignore_directories=True,case_sensitive=False)
self.output = output
def on_created(self,event):
self.output.append("created: %s." % event.src_path)
def on_modified(self,event):
self.output.append("modified: %s." % event.src_path)
def on_moved(self,event):
self.output.append("moved: %s." % event.src_path)
def on_deleted(self,event):
self.output.append("deleted: %s." % event.src_path)
if __name__ == "__main__":
w = Watcher(r"C:\Temp",10,['*.txt'])
for event in w.run():
print(event)
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)