1

我有一个使用看门狗 python 模块在 Windows 上运行的 python 脚本,该模块旨在递归地检测包含文件夹的文件夹中的文件位置更改。当我在当前位置之外的内部文件夹中移动文件时,会发生 FileDeleted 事件而不是 FileMoved。我希望能够知道文件的结束位置是什么,我可以在 Mac 上做到这一点,但在 Windows 上却不行。我读了这篇文章,这表明问题出在 Windows 上。

这是我的代码:

class Handler(PatternMatchingEventHandler):
    @staticmethod
    if event.event_type == 'created' or event.event_type == 'modified':
          # do something if file created.
    elif event.event_type == 'deleted'
          # do something if file deleted
    elif event.event_type == 'moved':
          # do something if file moved

如何使文件移动事件发生,而不是文件创建和删除事件?或者是否有一种解决方法可以让我通过获取最终文件路径来将 DeletedEvent 视为 MovedEvent?

任何帮助将不胜感激!

4

1 回答 1

1

尝试像这样分别定义每个事件:

def on_created(event):
    print(f"hey, {event.src_path} has been created!")

def on_deleted(event):
    print(f"Someone deleted {event.src_path}!")

def on_modified(event):
    print(f"{event.src_path} has been modified")

def on_moved(event):
    print(f"someone moved {event.src_path} to {event.dest_path}")

my_event_handler.on_created = on_created
my_event_handler.on_deleted = on_deleted
my_event_handler.on_modified = on_modified
my_event_handler.on_moved = on_moved

无论如何,我认为在此链接中您会找到所需的信息:https ://www.thepythoncorner.com/2019/01/how-to-create-a-watchdog-in-python-to-look-for-filesystem-变化/

于 2020-01-11T14:08:03.767 回答