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