Python监视程序返回目录中的更改列表
我正在使用watchdog查看目录C:\Temp中的任何文本文件是否已创建/删除/移动/修改。我希望看门狗只运行10秒钟,然后给我“文件夹中发生了什么”的列表,这可能会进一步处理。 代码运行得很好。但是有没有更好的解决方案,或者有没有改进代码的方法? 我目前的情况如下:Python监视程序返回目录中的更改列表,python,python-watchdog,Python,Python Watchdog,我正在使用watchdog查看目录C:\Temp中的任何文本文件是否已创建/删除/移动/修改。我希望看门狗只运行10秒钟,然后给我“文件夹中发生了什么”的列表,这可能会进一步处理。 代码运行得很好。但是有没有更好的解决方案,或者有没有改进代码的方法? 我目前的情况如下: import time from watchdog.observers import Observer from watchdog.events import PatternMatchingEventHandler clas
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)