所以我尝试将键盘记录器作为一个小小的入门项目来帮助我学习更多有关编程的知识。我正在使用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()
提前感谢任何可以帮助我弄清楚为什么会发生这种情况的人。
答案 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来保留状态。