Python Watchdog - функция отправки требуется?

У меня есть Bluetooth-пульт, подключенный к моему RaspberryPi, и я хочу перехватывать любые события нажатия клавиш, которые хранятся в / dev / input / event0 с помощью сторожевого модуля. После некоторых проблем я решил проверить его с помощью небольшого тестового кода. И я обнаружил несколько проблем с пониманием. Во-первых, это тестовый код. Он должен просто вернуть "foo", если какой-либо файл на моем рабочем столе был изменен.

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

class Event_Handler(FileSystemEventHandler):
    def on_modified(self, event):
        print("foo")
path = "/home/pi/Desktop"

observer = Observer()
observer.schedule(Event_Handler, path)
observer.start()

while(1):
    time.sleep(3)
    print("Again")

Ошибка, которую я получаю, говорит:

Exception in thread Thread-1:
Traceback (most recent call last):
  File "/usr/lib/python3.5/threading.py", line 914, in _bootstrap_inner
    self.run()
  File "/home/pi/.local/lib/python3.5/site-packages/watchdog/observers/api.py", line 199, in run
    self.dispatch_events(self.event_queue, self.timeout)
  File "/home/pi/.local/lib/python3.5/site-packages/watchdog/observers/api.py", line 368, in dispatch_events
    handler.dispatch(event)

Как я понимаю, диспетчеризация - это метод FileSystemEventHandler, который вызывает методы on_modified, on_created и т. Д. В зависимости от типа события. Он вызывается в API-интерфейсе наблюдателя, когда событие инициируется, но каким-то образом вызывается с пустым аргументом. Мой вопрос сейчас: это моя ошибка или это связано с библиотекой watchdog? Я использую сторожевой таймер 0.9.0 и увидел, что исходный код в этой части изменился с 0.8.2, что описано здесь.

Другой вопрос, касающийся этого вопроса, заключается в том, что я должен указать исходный путь для файловой системы, которую я хотел бы отслеживать. Когда я указываю полный путь '/dev/input/event0', выдается ошибка, говорящая, что это не каталог. Это не дает мне ошибку, когда я передаю '/dev/input'. Я понимаю, почему это исправляет ошибку, но как я смогу различить изменения в файле event0 и любых других устройствах ввода? И это даже правдоподобный способ поймать входы?

Спасибо за помощь, Феликс

0 ответов

Другие вопросы по тегам