作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
终端输出错误,指出赋值前引用了局部变量“Listener”
。我正在尝试导入监听器 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
。有关说明,请参阅 Why am I getting an UnboundLocalError when the variable has a value?在 Python 常见问题解答中,或 Don't understand why UnboundLocalError occurs
要修复此问题,只需更改 Listener
实例的名称即可。无论如何,实例通常都是小写的。
with Listener(on_press=self._on_press) as listener:
listener.join()
关于python - UnboundLocalError 继续弹出,我不明白为什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58368019/
我是一名优秀的程序员,十分优秀!