我目前正在将数据从无限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()对它的引用-操作系统会假装实际上已经将数据写入磁盘。
慕慕森
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()
确保您将关闭文件,并保存写入文件的信息。
qq_遁去的一_1
TA贡献1725条经验 获得超7个赞
如果您异常退出程序,那么您可能会期望有时无法正确关闭该文件。
每次写入后打开和关闭文件都不会执行此操作,因为打开文件时仍有机会中断程序。
CTRL-C
退出程序的等效方法是低级的。就像“立即离开,生火了,请救自己”,然后程序会自动挂起。
如果您想清理文件,则将中断语句放入代码中。这样,您就可以优雅地处理关闭操作。
添加回答
举报
0/150
提交
取消