通过在 pynput 中使用 listener.join() 获得有关"callback errors"的通知意味着什么?



这是一个键盘记录器,在KeyInput函数中有listener.join(),但这是为了什么?

from pynput import keyboard
def KeyInput():
with keyboard.Listener(on_press=KeyLog) as listener:
# whenever there is a press on a key on the keyboard, it's directed to KeyLog 
listener.join()
def KeyLog(key):
if type(key) == keyboard._win32.KeyCode:
K = key.char
# normal characters like letters
else:
if 'cmd' in str(key):
K = str(key).replace('cmd', 'Windows')
else:
K = ' '+str(key)+' '
# keys like ctrl, caps lock, windows, etc
with open('keylogs.txt', 'a') as File:
File.write(K+'n')
File.close()
KeyInput()
KeyLog()

pynput的文档说:

如果回调处理程序引发异常,则侦听器将停止。由于回调在专用线程中运行,因此不会自动修正异常。

要获得回调错误的通知,请在侦听器实例上调用Thread.join

"回调错误"是什么意思?

"callback">是指将KeyLog函数作为on_press参数传递给keyboard.Listener

监听器是一个单独的线程,当有按键事件时调用KeyLog

如果KeyLog引发异常(例如,如果"keylogs.txt"文件无法打开),这是一个回调错误">;回调函数出错。但是它发生在侦听器线程中,主线程(调用KeyInput的地方)不可能处理异常(例如,向用户显示一条文件无法打开的消息)。

为了能够在主线程中处理异常,它必须从侦听器线程传播。这就是listener.join所做的(这是Thread类的join方法,因为Listener是一个子类):

如果在KeyLog函数中有一个异常,它将被listener.join()再次引发,以便在主线程中处理。

相关内容

  • 没有找到相关文章

最新更新