[英]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.