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

У меня есть следующий файл кода keylogger.py ниже, чтобы обнаружить нажатие конкретной клавиши и сохранить ее в файл 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()

person 7beggars_nnnnm    schedule 06.01.2020    source источник


Ответы (1)


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

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
person 3snoW    schedule 06.01.2020