如何在不每次关闭文档的情况下保存更改

时间:2019-02-08 18:37:25

标签: python-3.x

我已经制作了一个程序来监视键盘并将所有按下的键写在文档中,但是要保存更改,必须将其关闭,如何在不关闭的情况下更新信息?我正在使用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("\n")

    if key == keyboard.Key.enter:
        file.write("\n")

    if key == keyboard.Key.esc:
        file.write("\n")
        # 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()

我希望它实时保存更改。

1 个答案:

答案 0 :(得分:0)

对于特定用例,您可以使用file.flush()。您可能需要跟进fd

根据文档,它将“ [...]强制将文件描述符为fsync()的文件写入磁盘。在Unix上,这将调用本地MS _commit()函数;在Windows上,则为{{ 1}}函数”

请就此问题查看官方documentation以及其他discussions的信息。我在StackOverflow上看到了这个问题,但是我选择响应,因为它在Python-3.x标签下,人们可以提供Python3特定的提示。

让我知道这是否可行,如果不可行,您的平台是什么