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

时间:2013-05-31 18:46:52

标签: python while-loop raspberry-pi

我目前正在将无限循环数据写入覆盆子pi上的SD卡。

file = open("file.txt", "w")
while True:
    file.write( DATA )

如果程序没有通过命令或键盘中断关闭,似乎有时file.txt并不总是保存。是否有定期的方法来保存并确保数据被保存?我正在考虑使用

open("file.txt", "a")

附加到文件并定期关闭txt文件并再次打开它。在运行无限循环时,有更好的方法可以安全地存储数据吗?

4 个答案:

答案 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)

关闭文件并将代码再次写入文件。 并尝试选择+模式