如何从文件中读取键盘事件?

How do I read keyboard events from file?

我已经阅读了 ,这很相似并且让我了解了大部分内容。

代码的答案未发布,但我相信我已按照说明进行操作并设法使其正常工作 -- 除非在打开后。 它在录制后立即运行得非常好,但是我想保存数据并再次读取以备后用:实际上每次我 运行 程序,我不想每次都重新录制。

import keyboard
import threading
from keyboard import KeyboardEvent
import time
import json


def record(file='record.txt'):    
    f = open(file, 'w+')

    keyboard_events = []
    keyboard.start_recording()
    starttime = time.time()

    keyboard.wait('esc')
    keyboard_events = keyboard.stop_recording()


    print(starttime, file=f)

    for kevent in range(0, len(keyboard_events)):
        print(keyboard_events[kevent].to_json(), file = f)
    f.close()

def play(file="record.txt", speed = 1):
    f = open(file, 'r')
    
    lines = f.readlines()
    f.close()

    keyboard_events = []
    for index in range(1,len(lines)):
        keyboard_events.append(keyboard.KeyboardEvent(**json.loads(lines[index])))

    starttime = float(lines[0])
    keyboard_time_interval = keyboard_events[0].time - starttime
    keyboard_time_interval /= speed

    k_thread = threading.Thread(target = lambda : time.sleep(keyboard_time_interval) == keyboard.play(keyboard_events, speed_factor=speed) )
    k_thread.start()
    k_thread.join()

我对编码或 Python 语言并不是特别陌生,但这个问题让我感到困惑。我已经测试了所有变量,并且 none 其中的变量在记录函数之外被维持。
(我不完全理解 lambda、Threading 或 **json.loads,但我认为这不是问题。)

这是怎么回事?

对于额外的奖励积分,如果这可以异步进行,那就太棒了。不过一次一个问题。

以防万一其他人遇到与我相同的问题,只需在代码开头标记它即可。不知道它为什么有效,但它确实有效。

keyboard.start_recording()
temp = keyboard.stop_recording()

您可以立即忘记临时变量。