所以我试图创建一个python应用程序,当在目录中创建文件然后用新文件启动幻灯片时,它正在变为活动状态。我理解并设法正确创建并执行Watchdog-Observer,但现在我不知道如何继续。
在一个模块(mediachecker.py)中编写观察者,在main.py模块中,mediachecker.py正在执行。我现在想要继续并且只在创建文件时启动我的slideshow.py模块(所以当观察者检测到on_created事件时)。
我想我不太了解观察者或看门狗的概念,也不知道如何处理结果事件。
我希望你们能帮助我!
么嗲checker.朋友
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()
卖弄.朋友
from mediachecker import Checker
def main():
checker = Checker()
checker.watch()
if __name__ == "__main__":
main()
slideshow.py目前是空的,很快就会被写入
所以我找到了解决方案。我必须通过构造函数传递回调。
么嗲checker.朋友
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()
卖弄.朋友
from mediachecker import Checker
def callback():
print('callback')
def main():
checker = Checker()
checker.watch(callback)
if __name__ == "__main__":
main()