【发布时间】:2019-01-03 20:26:19
【问题描述】:
当使用事件列表调用函数时,它什么也不做。
我尝试将其保存到文件或以某种方式共享变量,但到目前为止没有任何效果。
这是record.py,它记录按下的键并将它们保存到文件中
import keyboard
import pickle
with open('keys.txt','wb') as f:
pickle.dump(keyboard.record(until='*'),f)
这里是script.py,它从文件中加载按下的键并再次按下它们
import keyboard
import pickle
with open('keys.txt','rb') as f:
keyboard.play(pickle.load(f))
它没有显示任何错误,但它什么也不做 - 它应该输入保存在文件中的内容,但它没有。
【问题讨论】:
-
你明白
open('file.txt', 'wb')的'wb'代表什么吗?这使它成为一个二进制文件。您不能简单地将字节写入文件并期望从中获得文本。注意pickle只是将一个对象变成二进制流(字节对象),并且可以再次从该流中返回一个对象。 -
我需要将事件列表保存到文件中,这是我发现的唯一方法
-
pickle.load(f) 完成了它的工作,它加载了正确的列表,但是这个函数不知何故什么也没做。
-
哪个函数“什么都不做”?
-
keyboard.play() 不按也不做任何事情,它什么也不输入。如果我将代码更改为只写出由 pickle.load(f) 创建的列表,它会写入正确的列表 - 列表中充满了键盘事件,所以这没有错误
标签: python python-3.x pickle keyboard-events