幕布斯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()對它的引用-操作系統會假裝實際上已經將數據寫入磁盤。

慕慕森
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條經驗 獲得超8個贊
如果您異常退出程序,那么您可能會期望有時無法正確關閉該文件。
每次寫入后打開和關閉文件都不會執行此操作,因為打開文件時仍有機會中斷程序。
CTRL-C
退出程序的等效方法是低級的。就像“立即離開,生火了,請救自己”,然后程序會自動掛起。
如果您想清理文件,則將中斷語句放入代碼中。這樣,您就可以優雅地處理關閉操作。
添加回答
舉報
0/150
提交
取消