本问题已经有最佳答案,请猛点这里访问。
我制作了一个监控键盘并在文档中写下所有按键的程序,但为了保存更改,它必须关闭,如何更新信息而不关闭? 我正在使用lib"pynput"
我试图创建一个循环来打开和关闭文档,但它没有成功地工作。
#input the lib
from pynput import keyboard
file = open("test.txt","a")
def on_press(key):
'''check pressed keys, AttributeError is for special keys'''
try:
file.write(key.char)
except AttributeError:
file.write('{0}'.format(key))
def on_release(key):
'''if that keys pressed go to a new line, if esc than stop a program and save changes'''
if key == keyboard.Key.space:
file.write("
")
if key == keyboard.Key.enter:
file.write("
")
if key == keyboard.Key.esc:
file.write("
")
# Stop listener
return False
# Collect events until released
with keyboard.Listener(
on_press=on_press,
on_release=on_release) as listener:
listener.join()
file.close()
我希望它能够实时保存更改。
您可以将file.flush()用于特定用例。 您可能需要跟进os.fsync(file.fileno())
根据文档,它将"强制将文件写入filedescriptor fd到磁盘。在Unix上,这将调用本机fsync()函数;在Windows上,MS _commit()函数"
查看官方文档,以及有关此问题的其他一些讨论。 我已经在StackOverflow上看到过这个问题,但是我选择在Python-3.x标签下进行响应,人们可以提供特定于Python3的提示。
让我知道这是否有效,如果没有,那么你的平台是什么
我以这种方式使用它:file.write(key.char)file.flush()os.fsync(file.fileno()),这可以正常工作。 谢谢你的帮助。 忘了告诉我,我在windows上工作
很好,感谢报告它在Windows中也能正常工作,我只在Linux上测试过! 如果答案令人满意,请随时接受,以便将问题关闭,并在将来由其他人推荐。