我目前正在将无限循环数据写入覆盆子pi上的SD卡。
file = open("file.txt", "w")
while True:
file.write( DATA )
如果程序没有通过命令或键盘中断关闭,似乎有时file.txt并不总是保存。是否有定期的方法来保存并确保数据被保存?我正在考虑使用
open("file.txt", "a")
附加到文件并定期关闭txt文件并再次打开它。在运行无限循环时,有更好的方法可以安全地存储数据吗?
答案 0 :(得分:10)
文件的write()
方法不一定将数据写入磁盘。您必须调用flush()
方法以确保发生这种情况......
file = open("file.txt", "w")
while True:
file.write( DATA )
flle.flush()
不要担心os.fsync()
的引用 - 操作系统会假装数据已写入磁盘,即使它实际上没有。
答案 1 :(得分:1)
如果您异常退出程序,那么您应该期望有时文件无法正常关闭。
每次写入后打开和关闭文件都不会这样做,因为在文件打开时你仍有机会中断程序。
退出程序的CTRL-C
方法的等效项是低级的。这就像是,“现在出去,有火,拯救自己”,程序就会自行悬挂。
如果要干净接近文件,请将中断语句放在代码中。这样你就可以优雅地处理关闭。
答案 2 :(得分:1)
使用with语句 - 它将确保文件自动关闭!
with open("file.txt", "w") as myFile:
myFile.write(DATA)
基本上,在这种情况下,with语句的作用是:
try:
myFile = open("file.txt", "w")
do_stuff()
finally:
myFile.close()
确保您将关闭该文件,并保存写入该文件的信息。
有关with语句的更多信息,请访问:PEP 343
答案 3 :(得分:0)
关闭文件并将代码再次写入文件。 并尝试选择+模式