看门狗on_deleted事件处理程序始终将事件标记为文件,即使删除目录也是如此

问题描述

我正在用python创建一个看门狗,当我删除一个文件夹时,它将其记录为文件删除而不是目录删除。我已经从代码中发布了完整的工作成果。我唯一的问题是event.is_directory总是返回false

filesystem.py

import sys 
import time
import logging 
import tkinter as tk
from tkinter import filedialog

from watchdog.observers import Observer 
from watchdog.events import LoggingEventHandler,FileSystemEventHandler

class OnMyWatch:

    def __init__(self,watch_src,watch_dest):
        self.observer = Observer()
        self.watch_src = watch_src
        self.watch_dest = watch_dest


    def run(self):
        event_handler = Handler()
        self.observer.schedule(event_handler,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_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__":
    root = tk.Tk()
    root.withdraw()

    watch_src = filedialog.askdirectory()
    watch_dest = filedialog.askdirectory()

    watch = OnMyWatch(watch_src,watch_dest)
    watch.run()

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)