Python 尝试连接时脚本失败

Python script fails when trying to concatenate

所以我正在尝试制作一个键盘记录器作为一个小的入门项目,以帮助我学习更多关于编程的知识。我正在使用 pynput 来检测键盘输入,我想继续将字符添加到名为 line 的变量中。当我将 line += str2 放在函数外部而不是函数中时,我将要显示的脚本有效(str 变量被放在那里以调试这个确切的东西。)

代码如下:

import msvcrt, datetime
from pynput.keyboard import Key, Listener

date = str(datetime.date.today())
line = "a"
str1 = "1"
str2 = "2"

#Saves given data to a dated text file.
def saveToFile(data):
    file = open("keylog_{}.txt" .format(date), "a+")
    file.write(str(data))
    file.close()

def on_press(key):
    line += str2
    print(line)

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

提前感谢任何可以帮助我弄清楚为什么会发生这种情况的人。

您没有对发送到您的 on_press 函数中的密钥执行任何操作。你是这个意思吗:

def on_press(key):
    global line
    line += key
    print(line)

在您的示例中也将取消分配行,要执行全局操作,您必须使用关键字 global 或创建 class/closure 以保留状态。

这与变量作用域有关。 on_press 方法中的 line 与上面的 line 不同。如果你想做类似的事情,你需要告诉它使用全局范围变量:

def on_press(key):
    global line
    line += key
    print(line)