如何从文件中读取键盘事件?
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()
您可以立即忘记临时变量。
我已经阅读了
代码的答案未发布,但我相信我已按照说明进行操作并设法使其正常工作 -- 除非在打开后。 它在录制后立即运行得非常好,但是我想保存数据并再次读取以备后用:实际上每次我 运行 程序,我不想每次都重新录制。
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()
您可以立即忘记临时变量。