【发布时间】:2023-01-11 07:11:41
【问题描述】:
我正在使用 Watchdog library 来监控不同的文件夹。有两个文件夹具有两种不同的行为:
在文件夹 alpha 中,当创建新文件时,将其移动到 destination_alpha。 在文件夹 beta 中,当创建一个新文件时,将其传递给一个方法。
这是第一个行为的代码 sn-p:
import shutil
from watchdog.events import FileSystemHandler
from watchdog.observers import Observer
class FolderWatcher(FileSystemEventHandlder):
'''Overrides the on_created method to take action when a file is created.'''
def on_created(self, event):
shutil.move(event.src_path, '/destination_alpha')
event_handler = FolderWatcher()
folder_alpha_observer = Observer()
folder_alpha_observer.schedule(event_handler,'/folder_alpha')
try:
while True:
time.sleep(1)
finally:
folder_alpha_observer.stop()
folder_alpha_observer.join()
我可以在 on_created 方法中为另一个具有不同行为的 FolderWatcher 对象重用同一个类吗?或者我是否需要使用不同的 on_created 方法创建一个新的 FolderWatcher-ish 类?
class SecondFolderWatcher(FileSystemEventHandlder):
'''Overrides the on_created method to take action when a file is created.'''
def on_created(self, event):
imported_method(event.src_path)
second_folder_watcher = SecondFolderWatcher()
folder_beta_observer = Observer()
folder_beta_observer.schedule(second_folder_watcher,'/folder_alpha')
try:
while True:
time.sleep(1)
finally:
folder_alpha_observer.stop()
folder_alpha_observer.join()
这看起来不是很优雅,为我想要执行的每个 on_created 操作创建一个全新的类。但我没有看到更好的方法。你的想法?
【问题讨论】:
标签: python inheritance overriding