Python 使用 pynput 实现键盘鼠标监控与日志记录

键盘旁的猫
键盘旁的猫
发布时间:2026-10-14| 5人浏览过
原创

本文介绍如何使用 Python 的 pynput 库轻量级地监控键盘和鼠标操作。通过示例代码展示如何捕获按键与点击事件,并利用多线程和 loguru 将监控数据持久化保存至日志文件,为后续通过 NLTK 等工具处理数据提供基础。

关于 pynput

pynput 是一个用于监控键盘和鼠标输入的 Python 库。虽然市面上存在许多具备类似功能的游戏库(如 pygame),但它们通常体积庞大且功能冗余。当仅需实现基础的输入监控时,pynput 因其轻量级和高效性成为更合适的选择。

实例

键盘监控

假设需要静默运行一个后台进程以监控并记录键盘输入,可以参考以下实现方式:


from pynput import keyboard


def on_press(key):
    print(f'{key} :pushed')

def on_release(key):
    #print(f'{key} released')
    if key == keyboard.Key.esc:
        # Stop listener
        return False


with keyboard.Listener(on_press=on_press,on_release=on_release) as lsn:
    lsn.join()
复制代码

控制台打印:

鼠标监控


from pynput import mouse

def on_click(x, y, button, pressed):
    if button == mouse.Button.left:
        print('left was pressed!')
    elif button == mouse.Button.right:
        print('right was pressed!')
        return False
    else:
        print('mid was pressed!')

# Collect events until released
with mouse.Listener(on_click=on_click) as listener:
    listener.join()
复制代码

控制台打印:

注意,每条事件会被打印两次,这是因为鼠标按下(pressed)和释放(released)动作均会触发相应的事件回调。

监控并记录到日志文件


from pynput import keyboard,mouse
from loguru import logger
from threading import Thread

# 定义日志文件
logger.add('demo.log')
def on_press(key):
    logger.debug(f'{key} :pushed')

def on_release(key):
    #print(f'{key} released')
    if key == keyboard.Key.esc:
        # Stop listener
        return False

# 定义f1用于线程1
def f1():
    with keyboard.Listener(on_press=on_press,on_release=on_release) as lsn:
        lsn.join()



def on_click(x, y, button, pressed):
    if button == mouse.Button.left:
        logger.debug('left was pressed!')
    elif button == mouse.Button.right:
        logger.debug('right was pressed!')
        return False
    else:
        logger.debug('mid was pressed!')

# 定义f2用于线程2
def f2():
    # Collect events until released
    with mouse.Listener(on_click=on_click) as listener:
        listener.join()


if __name__ == '__main__':
    # 起两个线程分别监控键盘和鼠标
    t1 = Thread(target=f1)
    t2 = Thread(target=f2)
    t1.start()
    t2.start()
复制代码

查看日志内容:

如上所示,所有键盘操作均已被记录。通过对该日志文件进行简单的 NLTK 语言处理,即可复原相关的聊天记录内容。

以上就是今天的全部内容了,感谢您的阅读,我们下节再会。

到此这篇关于你知道怎么用Python监控聊天记录吗的文章就介绍到这了,更多相关Python 监控内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。