看门狗模块内的错误

2024-06-02 08:41:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经和python模块看门狗一起工作了几周,在模块的执行方式和文档方面遇到了很多不一致的地方。第一个问题是模块将所有删除事件标记为文件。src_路径正确,因此可以创建解决方案,但即使删除文件夹,event.is_目录也将为false。第二个错误是它如何处理移动和重命名。当文件/目录被移动或重命名时,会触发文档对_moved的声明,但这仅适用于后者。当存在重命名时,会触发on_moved,然后触发on_modified。移动文件时,会触发“on_已删除”,然后触发“on_已创建”,然后触发“on_已修改”。这个问题我还没有解决办法。下面是支持我的声明的代码

import time 
from watchdog.observers import Observer 
from watchdog.events import FileSystemEventHandler 
  
  
class OnMyWatch: 
    # Set the directory on watch 
    watchDirectory = "/give / the / address / of / directory"
  
    def __init__(self): 
        self.observer = Observer() 
  
    def run(self): 
        event_handler = Handler() 
        self.observer.schedule(event_handler, self.watchDirectory, recursive = True) 
        self.observer.start() 
        try: 
            while True: 
                time.sleep(5) 
        except: 
            self.observer.stop() 
            print("Observer Stopped") 
  
        self.observer.join() 
  
  
class Handler(FileSystemEventHandler): 
    def on_created(self, event):
        print('Created')

    def on_modified(self, event):
        print('Modified')

    def on_moved(self, event):
        print('Moved')

    def on_deleted(self, event):
        if event.is_directory:
            print("Watchdog has registered a deleted directory event")
        else:
            print("Watchdog has registered a deleted file event") 
  
if __name__ == '__main__': 
    watch = OnMyWatch() 
    watch.run()