尝试连接时,Python脚本失败

时间:2018-06-09 23:10:19

标签: python concatenation pynput

所以我尝试将键盘记录器作为一个小小的入门项目来帮助我学习更多有关编程的知识。我正在使用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()

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

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:2)

你没有使用发送到on_press函数的密钥做任何事情。你的意思是:

{{1}}

在你的例子中,line也将被取消分配,为了做全局,你必须使用关键字global或者使用class / closure来保留状态。