如何解决Python NameError:名称'keys'未定义错误pynput
我一直在尝试制作键盘记录器,但在运行脚本时在 python 中遇到了这个错误。
文件“C:\Users\David\AppData\Roaming\Python\Python39\site-packages\pynput_util_init_.py”,第 211 行,在内部 返回 f(self,*args,**kwargs) 进程中的文件“C:\Users\David\AppData\Roaming\Python\Python39\site-packages\pynput\keyboard_win32.py”,第 280 行 self.on_press(key) 文件“C:\Users\David\AppData\Roaming\Python\Python39\site-packages\pynput_util_init.py”,第 127 行,在内部 如果 f(*args) 为 False: 文件“C:\Users\David\Desktop\TESTING\keylogger\main.py”,第 16 行,在 on_press 键。附加(str(键)) NameError: 名称 'keys' 未定义 回溯(最近一次调用最后一次): 文件“C:\Users\David\Desktop\TESTING\keylogger\main.py”,第 43 行,在 listener.join() 文件“C:\Users\David\AppData\Roaming\Python\Python39\site-packages\pynput_util_init_.py”,第 259 行,加入 六.reraise(exc_type,exc_value,exc_traceback) 文件“C:\Users\David\AppData\Roaming\Python\Python39\site-packages\six.py”,第 702 行,重新提出 提高 value.with_traceback(tb) 文件“C:\Users\David\AppData\Roaming\Python\Python39\site-packages\pynput_util_init_.py”,第 211 行,在内部 返回 f(self,**kwargs) 进程中的文件“C:\Users\David\AppData\Roaming\Python\Python39\site-packages\pynput\keyboard_win32.py”,第 280 行 self.on_press(key) 文件“C:\Users\David\AppData\Roaming\Python\Python39\site-packages\pynput_util_init.py”,第 127 行,在内部 如果 f(*args) 为 False: 文件“C:\Users\David\Desktop\TESTING\keylogger\main.py”,第 16 行,在 on_press 键。附加(str(键)) NameError: 名称 'keys' 未定义 [0.614s 内完成]
我不知道如何解决这个问题,我已经用 pip install pyinput 安装了 pyinput,但仍然无法正常工作:/
代码:
import pynput
from pynput.keyboard import Key,Listener
count = 0
key = []
def on_press(key):
global keys,count
keys.append(str(key))
print("{0} pressed".format(key))
if count >= 10:
count = 0
write_file(keys)
keys = ()
def write_file(keys):
with open("log.txt","w" & "a") as f:
for key in keys:
k = str(key).replace("'","")
f.write(str(key))
def on_release(key):
if key == Key.esc:
return False
with Listener(on_press=on_press,on_release=on_release) as listener:
listener.join()
感谢您的帮助。
解决方法
因为键实际上没有在任何地方定义
我认为您拼写错误。
您需要将 key = []
替换为 keys = []
我认为您在 keys
列表的初始化过程中打错了字。您已将其声明为 key
,但您需要 keys
。
您需要:
keys = []
代替:
key = []
,
您在第 6 行打错了字,因此 keys
未在任何地方声明,因为错误消息告诉您(例如 NameError: name 'keys' is not defined
)。
第 6 行应该是 keys = []
的 key = []
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。