为了账号安全,请及时绑定邮箱和手机立即绑定

从无限While循环保存到文本文件

从无限While循环保存到文本文件

幕布斯6054654 2021-03-18 18:14:56
我目前正在将数据从无限while循环写入树莓派上的SD卡。file = open("file.txt", "w")while True:    file.write( DATA )如果程序不是通过命令或键盘中断关闭的,有时file.txt并不总是保存。是否有定期的方法来保存并确保数据被保存?我正在考虑使用open("file.txt", "a")附加到文件并定期关闭txt文件,然后再次打开它。在通过无限while循环运行时,是否存在更好的安全存储数据的方法?
查看完整描述

3 回答

?
qq_笑_17

TA贡献1818条经验 获得超7个赞

文件的write()方法不一定会将数据写入磁盘。您必须调用该flush()方法以确保发生这种情况...


file = open("file.txt", "w")

while True:

    file.write( DATA )

    flle.flush()

不用担心os.fsync()对它的引用-操作系统会假装实际上已经将数据写入磁盘。


查看完整回答
反对 回复 2021-03-29
?
慕慕森

TA贡献1856条经验 获得超17个赞

使用with语句-确保文件自动关闭!


with open("file.txt", "w") as myFile:

    myFile.write(DATA)

本质上,在这种情况下,with语句将执行以下操作:


try:

    myFile = open("file.txt", "w") 

    do_stuff()


finally:

    myFile.close()

确保您将关闭文件,并保存写入文件的信息。


查看完整回答
反对 回复 2021-03-29
?
qq_遁去的一_1

TA贡献1725条经验 获得超7个赞

如果您异常退出程序,那么您可能会期望有时无法正确关闭该文件。

每次写入后打开和关闭文件都不会执行此操作,因为打开文件时仍有机会中断程序。

CTRL-C退出程序的等效方法是低级的。就像“立即离开,生火了,请救自己”,然后程序会自动挂起。

如果您想清理文件,则将中断语句放入代码中。这样,您就可以优雅地处理关闭操作。


查看完整回答
反对 回复 2021-03-29
  • 3 回答
  • 0 关注
  • 216 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信