Python调用read()函数无返回,keyboard按键记录写入文件后读不出怎么办
键盘记录文件读取问题修复
问题根因
- 同一时间对
pasos.txt同时持有读、写两个文件句柄,w写入模式打开时会直接清空文件原有内容,且IO操作存在资源冲突 - 执行
wf.write()写入后,文件指针停留在写入内容的末尾,直接执行读操作会从末尾开始读,自然读取不到任何数据
修复代码
分开写入、读取两个步骤,写完关闭写入句柄后再执行读取操作:
import keyboard import time import random import os # 录制按键并写入文件 lc = keyboard.record(until="shift") sc = str(lc) with open("pasos.txt", 'w', encoding='utf-8') as wf: wf.write(sc) # 写入完成后单独打开文件读取 with open("pasos.txt", 'r', encoding='utf-8') as rf: data = rf.read() print(data) # 回放逻辑后续调试 #keyboard.play(save,speed_factor=1)
可选同句柄读写方案
如果要在同一个文件句柄内完成写入和读取,使用r+模式并在写入后调用seek(0)将文件指针移到开头即可:
lc = keyboard.record(until="shift") sc = str(lc) with open("pasos.txt", 'r+', encoding='utf-8') as f: f.write(sc) f.seek(0) data = f.read() print(data)
额外提示:后续调试回放功能时注意,
keyboard.play()接收的参数是KeyboardEvent对象列表,你当前转存的字符串无法直接传入使用,需要做序列化/反序列化处理。
内容的提问来源于stack exchange,提问作者Andromeda
相关产品推荐
相关产品推荐

