Записывать импульс последовательно, когда каждая клавиша нажата в таймере счета при выполнении keylogger.py - PullRequest
0 голосов
/ 06 января 2020

У меня есть следующий кодовый файл keylogger.py ниже, чтобы обнаружить нажатие указанной клавиши c и сохранение в файл log.txt. Я хочу добавить к этому python коду таймер, который запускается, когда код начинает выполняться, я также хочу, чтобы эта часть кода сохраняла точный момент нажатия keys, начиная с начала файла, и сохраняла это информация в файле log.txt или другом отдельном файле (я думаю, нужно использовать with open и f.write). Несколько идей о хронометраже я нашел в Как создать таймер на python и https://pythonhow.com/measure-execution-time-python-code/.

Так что мой log.txt будет выглядеть примерно так

log.py

RLLR     #this line would already be produced by keylogger.py

R: 0.2s
L:0.24s
L:1.34s
R:2.5s

keylogger.py

from pynput.keyboard import Listener, Key

#set log file location
logFile = "/home/diego/log.txt"



def writeLog(key):
    translate_keys = {
        Key.right: "R",
        Key.left: "L",
    }
    if key in translate_keys:
        with open(logFile, "a") as f:
            f.write(translate_keys[key])

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

1 Ответ

1 голос
/ 06 января 2020

Использование отдельных файлов было бы самым простым решением, я думаю:

from pynput.keyboard import Listener, Key
import time

#set log file location for keys pressed
keysLogFile = "/home/diego/keys_log.txt"

#set log file location for keys timestamps
timestampsLogFile = "/home/diego/ts_log.txt"

#store start timestamp
startTime = time.time()


def writeLog(key):
    translate_keys = {
        Key.right: "R",
        Key.left: "L",
    }
    if key in translate_keys:
        currentTime = time.time() - startTime
        with open(keysLogFile, "a") as f:
            f.write(translate_keys[key])
        with open(timestampsLogFile, "a") as f:
            f.write(translate_keys[key] + ": " + str(currentTime) + "s\n")

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

Это даст вам два отдельных файла:

keys_log.txt

RLLR

ts_log.txt

R: 0.2s
L: 0.24s
L: 1.34s
R: 2.5s
...