您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

使用Python Watchdog在目录中发生任何更改时如何运行函数?

使用Python Watchdog在目录中发生任何更改时如何运行函数?

您需要子类化,并在分派中做任何您想做的事情:

import sys
import time
import logging
from watchdog.observers import Observer
from watchdog.events import LoggingEventHandler

class Event(LoggingEventHandler):
    def dispatch(self, event):
        print("Foobar")

if __name__ == "__main__":
    logging.basicConfig(level=logging.INFO,
                        format='%(asctime)s - %(message)s',
                        datefmt='%Y-%m-%d %H:%M:%s')
    path = sys.argv[1] if len(sys.argv) > 1 else '.'
    event_handler = Event()
    observer = Observer()
    observer.schedule(event_handler, path, recursive=True)
    observer.start()
    try:
        while True:
            time.sleep(1)
    except KeyboardInterrupt:
        observer.stop()
    observer.join()

如果运行该代码,则Foobar每当检测到更改时都会看到输出,要忽略文件,您可能需要使用[events.PatternMatchingEventHandler] [1]。每种都有各种方法

要在某物被修改的情况下做某事,我们可以重写on_modified

class Event(LoggingEventHandler):
    def on_modified(self, event):
        print("Doh")

使用上面的类和event_handler = Event() 并更改文件来运行代码输出如下内容

Doh
Doh
Doh
Doh
Doh
Doh
Doh
2015-10-03 15:33:55 - Created file: ./test.txt___jb_bak___
2015-10-03 15:33:55 - Moved file: from ./test.txt to ./test.txt___jb_old___
2015-10-03 15:33:55 - Moved file: from ./test.txt___jb_bak___ to ./test.txt
2015-10-03 15:33:55 - Deleted file: ./test.txt___jb_old___
Doh

[1]:您可以覆盖http://pythonhosted.org/watchdog/api.html#watchdog.events.PatternMatchingEventHandlerEventHandler类,这完全取决于您要执行的操作。该LoggingEventHandler班itslef是的子类watchdog.events.FileSystemEventHandler

基础:对象

Base file system event handler that you can override methods from.

调度到适当的方法

Parameters: event (FileSystemEvent) – The event object representing the file system event.

捕获所有事件处理程序。

Parameters: event (FileSystemEvent) – The event object representing the file system event.

创建文件或目录时调用

Parameters: event (DirCreatedEvent or FileCreatedEvent) – Event representing file/directory creation.

删除文件或目录时调用

Parameters: event (DirDeletedEvent or FileDeletedEvent) – Event representing file/directory deletion.

修改文件或目录时调用

Parameters: event (DirModifiedEvent or FileModifiedEvent) – Event representing file/directory modification.

在移动或重命名文件或目录时调用

Parameters: event (DirMovedEvent or FileMovedEvent) – Event representing file/directory movement.
python 2022/1/1 18:30:54 有603人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶