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

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

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

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

import sysimport timeimport loggingfrom watchdog.observers import Observerfrom watchdog.events import LoggingEventHandlerclass 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()
并更改文件来运行代码将输出如下内容:

DohDohDohDohDohDohDoh2015-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.txt2015-10-03 15:33:55 - Deleted file: ./test.txt___jb_old___Doh

[1]:您可以覆盖http://pythonhosted.org/watchdog/api.html#watchdog.events.PatternMatchingEventHandler

EventHandler
类,这完全取决于您要执行的 *** 作。该
LoggingEventHandler
班itslef是的子类
watchdog.events.FileSystemEventHandler

class watchdog.events.FileSystemEventHandler 基础:对象

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

dispatch(event)将事件 调度到适当的方法。

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

on_any_event(event) 捕获所有事件处理程序。

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

on_created(event) 在创建文件或目录时调用。

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

on_deleted(event) 删除文件或目录时调用。

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

on_modified(event) 修改文件或目录时调用。

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

on_moved(event) 在移动或重命名文件或目录时调用。

Parameters: event (DirMovedEvent or FileMovedEvent) – Event representing file/directory movement.


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5649310.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-16
下一篇2022-12-16

发表评论

登录后才能评论

评论列表(0条)

    保存