如何在没有 file.close() 语句的情况下在运行 python 进程中刷新文件写入缓冲区?

Omn*_*ous 4 python buffer file

我有一个正在后台 Python 3.5 进程中写入的文件。文件是在此过程中打开的(基本上是一个正在运行的 Python 脚本),但我忘记包含文件关闭语句以偶尔在该脚本中刷新缓冲区。该脚本是无限的,除非手动结束,并且我(现在)知道终止 python 进程将导致缓冲区中的所有数据丢失。无论如何,有没有办法恢复要在这个已经运行的进程中写入的数据?

Sha*_*dow 5

根据文档

首先 do f.flush(),然后 do os.fsync(f.fileno()),以确保与 f 关联的所有内部缓冲区都写入磁盘。

这是一个例子,

import os

with open("filename", "w") as f:
    while True:  # infinite program
        f.write("the text")
        f.flush()
        os.fsync(f.fileno())
Run Code Online (Sandbox Code Playgroud)