Python名称错误:未定义名称“keys”错误pynput

2024-06-16 09:57:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在尝试制作一个键盘记录器,但在运行脚本时在python中出现了这个错误

File "C:\Users\David\AppData\Roaming\Python\Python39\site-packages\pynput_util_init_.py", line 211, in inner return f(self, *args, **kwargs) File "C:\Users\David\AppData\Roaming\Python\Python39\site-packages\pynput\keyboard_win32.py", line 280, in process self.on_press(key) File "C:\Users\David\AppData\Roaming\Python\Python39\site-packages\pynput_util_init.py", line 127, in inner if f(*args) is False: File "C:\Users\David\Desktop\TESTING\keylogger\main.py", line 16, in on_press keys.append(str(key)) NameError: name 'keys' is not defined Traceback (most recent call last): File "C:\Users\David\Desktop\TESTING\keylogger\main.py", line 43, in listener.join() File "C:\Users\David\AppData\Roaming\Python\Python39\site-packages\pynput_util_init_.py", line 259, in join six.reraise(exc_type, exc_value, exc_traceback) File "C:\Users\David\AppData\Roaming\Python\Python39\site-packages\six.py", line 702, in reraise raise value.with_traceback(tb) File "C:\Users\David\AppData\Roaming\Python\Python39\site-packages\pynput_util_init_.py", line 211, in inner return f(self, *args, **kwargs) File "C:\Users\David\AppData\Roaming\Python\Python39\site-packages\pynput\keyboard_win32.py", line 280, in process self.on_press(key) File "C:\Users\David\AppData\Roaming\Python\Python39\site-packages\pynput_util_init.py", line 127, in inner if f(*args) is False: File "C:\Users\David\Desktop\TESTING\keylogger\main.py", line 16, in on_press keys.append(str(key)) NameError: name 'keys' is not defined [Finished in 0.614s]

我不知道如何解决这个问题,我已经用pip安装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()

感谢您的帮助


Tags: keyinpyonpackageslinesitekeys
3条回答

因为关键点在任何地方都没有定义

我想你犯了拼写错误。

您需要将key = []替换为keys = []

您在第6行中输入了一个错误,因此keys不会像错误消息告诉您的那样在任何地方声明(例如NameError: name 'keys' is not defined

第6行应该是keys = []key = []

我认为您在初始化keys列表时有一个输入错误。您已将其声明为key,但需要keys

你需要:

keys = []

而不是:

key = []

相关问题 更多 >