Skip to main content
 首页 » 编程设计

关于 write() 和 truncate() 的 Python 问题

2025年05月04日9yxwkf

我在 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() 时才写入磁盘。如果您的操作系统崩溃或计算机断电,这些未保存的更改将会丢失。