如果在目录中创建了新文件(看门狗),则启动python模块

2024-05-29 04:59:45 发布

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

所以我尝试创建一个python应用程序,当文件在一个目录中创建,然后用新文件开始一个幻灯片放映。我理解并成功地创建和执行了一个看门狗观察者,但现在我不知道如何继续。在

在一个模块中(媒体检查器.py)观察者写在模块中主.py这个媒体检查器.py我被处决了。我现在想继续,只想开始我的幻灯片放映.py创建文件时的模块(因此,当观察者检测到on_创建的事件时)。在

我想我不太了解观察者或看门狗的概念,也不知道如何处理由此产生的事件。在

希望你们能帮帮我!在

媒体检查器.py

import time
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler 

path = '/Users/muser/Documents/directory'

class NewEventHandler(FileSystemEventHandler):
    def on_created(self, event):
        print('New files created')


class Checker(NewEventHandler):

    def watch(self):
        event_handler = NewEventHandler()
        observer = Observer()
        observer.schedule(event_handler, path, recursive=True)
        observer.start()
        try:
            while True:
                time.sleep(1) 
        except KeyboardInterrupt:
            observer.stop()
            observer.join()

主.py

^{pr2}$

幻灯片放映.py当前为空,即将写入


Tags: 模块文件frompyimporteventtimeon
1条回答
网友
1楼 · 发布于 2024-05-29 04:59:45

所以我找到了解决办法。我必须通过构造函数传递一个回调函数。在

媒体检查器.py

import time
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler 

path = '/Users/user/Documents/directory'

class NewEventHandler(FileSystemEventHandler):
    def __init__(self, callback):
        self.callback = callback
        super().__init__()

    def on_created(self, event):
        print('New files created')
        self.callback()

class Checker():
    def watch(self, callback):
        event_handler = NewEventHandler(callback)
        observer = Observer()
        observer.schedule(event_handler, path, recursive=True)
        observer.start()
        try:
            while True:
                time.sleep(1) 
        except KeyboardInterrupt:
            observer.stop()
            observer.join()

主.py

^{pr2}$

相关问题 更多 >

    热门问题