- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我是 Python 的新手,希望这个问题的答案对你们大多数人来说是显而易见的。
我正在用 Python 创建一个代表 ScanFolder 的类。
在该类的 __init__ 中,我启动了一个 watchdog.observers
每当监视目录下的文件发生更改时,此观察器将触发 watchdog.events.PatternMatchingEventHandler。
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import sys
import time
from watchdog.observers import Observer
import watchdog.events
path = sys.argv[1] if len(sys.argv) > 1 else '.'
class MyEventHandler(watchdog.events.PatternMatchingEventHandler):
def on_any_event(self, event):
print(event.src_path, event.event_type)
class ScanFolder:
'Class defining a scan folder'
def __init__(self, path):
self.path = path
self.documents = dict() # key = document label value = Document reference
self.event_handler = MyEventHandler(patterns=["*.jpg", "*.jpeg", "*.png", "*.bmp", "*.pdf"],
ignore_patterns=[],
ignore_directories=True)
self.observer = Observer()
self.observer.schedule(self.event_handler, self.path, recursive=False)
self.observer.start()
def stop(self):
self.observer.stop()
self.observer.join()
scan_folder = ScanFolder(path)
try:
while True:
time.sleep(1)
"""Here, I'll act on my scan_folder object that lists the discovered files"""
except KeyboardInterrupt:
log.warning("Ouch !!! Keyboard interrupt received.")
scan_folder.stop()
我的问题如下:
如何让我的 scan_folder.event_handler() 修改我的 scan_folder 对象?
实际上,我想在扫描文件夹中检测到文件的任何地方填充 scan_folder.documents 字典。
非常感谢您,并为我的无知感到抱歉。
最佳答案
有很多方法:但最简单的方法是将 ScanFolder 的绑定(bind)方法设置为 watchdog.events.PatternMatchingEventHandler
的 on_any_event
回调函数。所以你的代码变成:
class ScanFolder:
'Class defining a scan folder'
def __init__(self, path):
self.path = path
self.documents = dict() # key = document label value = Document reference
self.event_handler = watchdog.events.PatternMatchingEventHandler(patterns=["*.jpg", "*.jpeg", "*.png", "*.bmp", "*.pdf"],
ignore_patterns=[],
ignore_directories=True)
self.event_handler.on_any_event = self.on_any_event
self.observer = Observer()
self.observer.schedule(self.event_handler, self.path, recursive=False)
self.observer.start()
def on_any_event(self, event):
print(event.src_path, event.event_type)
print("Complete ScanFolder() access")
def stop(self):
self.observer.stop()
self.observer.join()
其他方法可以从 watchdog.events.PatternMatchingEventHandler 派生 ScanFolder ....但是注入(inject)函数是 python 的强大功能之一
关于python - 如何将参数传递给我的 Python watchdog.events.PatternMatchingEventHandler,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26369457/
我正在运行来自 this article 的代码并进行了一些更改以监视仅一种格式的文件创建/添加,即指定目录中的 .csv。 现在的问题是: 只要添加的新文件不是 .csv 格式,我的程序就会中断(停
我是 Python 的新手,希望这个问题的答案对你们大多数人来说是显而易见的。 我正在用 Python 创建一个代表 ScanFolder 的类。 在该类的 __init__ 中,我启动了一个 wat
我是一名优秀的程序员,十分优秀!