6

“python 的 file.flush() 到底在做什么?” 说你应该先f.flush()确保os.fsync(f)数据写入磁盘。
此外,“close() 是否暗示 Python 中的 flush()?” 声称f.close()意味着 a flush()

现在,问题是:我应该这样做

os.fsync(f)
f.close()

或者,确实f.close()也意味着一个os.fsync()

这里有Python IO文档,Python 文件关闭的文档,以及源代码。快速搜索“fsync”没有返回相关信息。

4

2 回答 2

0

我只尝试了 os.fsync() 然后 f.close() 和 os.fsync() 。两者都将给出立即数据写入文件的相同结果。尽管主电源插座突然断电并稍后重新打开电源,但使用任一方法更新文件。

因此,当有 os.fsync() 时,就不需要 f.close()。

于 2021-03-11T10:54:46.370 回答
0

我通过跟踪测试脚本检查了自己,不,这并不意味着 fsync。f.close() 意味着 f.flush() 因为它必须这样做。f.flush() 将内部(用户空间)缓冲区写入关联的文件描述符,关闭文件描述符后您无法写入文件描述符。然而,写入内核缓冲区并不能保证持久性,这就是 fsync 发挥作用的地方。

于 2021-10-24T20:08:29.253 回答