我开发了一个代码,用于编译由boppreh的键盘和鼠标.hoop功能生成的对象列表,目的是生成和保存基本的任务自动化文件。录制和回放操作很容易实现,尽管偶尔也会出现错误,但保存一个包含对象列表的文件似乎是不可能实现的。对数据进行pickle似乎是可能的,但我还没有找到足够的文档来解决抛出的错误。
以下是我的全部代码:
import keyboard, mouse, time, pickle, sys
from optparse import OptionParser
events = []
def OnKeyboardEvent(event):
global events
events.append(event)
def OnMouseEvent(event):
global events
# intended extra functionality here later
events.append(event)
def record():
global events
print("Hooking now...")
keyboard.hook(callback=OnKeyboardEvent)
mouse.hook(callback=OnMouseEvent)
print("Hooked.")
keyboard.wait(hotkey='escape')
keyboard.unhook_all()
mouse.unhook_all()
print("Exporting...")
# File IO here
print("Complete.\n")
def play(speed_factor):
global events
# File IO here
print('Playing recorded events...')
# Code below works fine, would love pointers if you have any tho
last_time = None
for event in events:
if speed_factor > 0 and last_time is not None:
time.sleep((event.time - last_time) / speed_factor)
last_time = event.time
if isinstance(event, mouse.ButtonEvent):
if event.event_type == 'up':
mouse.release(event.button)
else:
mouse.press(event.button)
elif isinstance(event, mouse.MoveEvent):
mouse.move(event.x, event.y)
elif isinstance(event, mouse.WheelEvent):
mouse.wheel(event.delta)
else:
key = event.scan_code
if event.event_type == 'down':
keyboard.press(key)
else:
keyboard.release(key)
print('Complete.\n')
def main():
record()
play(2)
if __name__ == "__main__":
main()
我试图使用pickle API,但遇到了一个错误,只是简单地说明
line 23, in decode
return codecs.charmap_decode(input,self.errors,decoding_table)\[0\]
UnicodeDecodeError: 'charmap' codec can't decode byte 0x81 in position 65: character maps to \<undefined\>
我试过这个
with open('bin.dat', 'wb') as f:
pickle.dump(events, f)
with open('bin.dat', 'r') as f:
evening = pickle.load(f)
有没有一种我完全错过的文件io方法,或者我应该继续用泡菜把我的头撞在墙上?
对我宽容一点,我有点新手:))提前谢谢你。