我在Mac上的终端机中,正在学习如何打开,关闭,读取,删除文件。
当我设定
f = open("sample.txt", 'w')
然后点击f.truncate()内容删除。
f.truncate()
但是,当我这样做时,f.write()它不会在文本文件中更新。它只会在我执行后更新f.truncate()。
f.write()
我想知道为什么会这样(我认为f.truncate()应该删除文本!)?为什么输入时文本编辑器不会自动更新f.write()?
f.write()写入Python进程自己的缓冲区(类似于Cfwrite()函数)。但是,直到调用f.flush()或f.close()或缓冲区填满时,数据才真正刷新到OS缓冲区中。完成此操作后,数据将对所有其他应用程序可见。
fwrite()
f.flush()
f.close()
请注意,操作系统执行另一层缓冲/缓存-由所有正在运行的应用程序共享。刷新文件后,会将其写入这些缓冲区,但直到一段时间或调用时才将其写入 磁盘fsync()。如果您的操作系统崩溃或计算机断电,则这些未保存的更改将丢失。
fsync()