python保存不了文件_关于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("

")

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上测试过! 如果答案令人满意,请随时接受,以便将问题关闭,并在将来由其他人推荐。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值