我已经检查了this answer,但是它不起作用。我正在寻找一种方法来强制python写文件(我们称之为file_A.py
),然后退出程序。我尝试了上面答案中建议的方法,但它只在目标文件存在并且我们添加更多内容时有效。在我的情况下,文件不存在,应该在程序正常退出前生成,原因是生成的文件要在程序的后续步骤中使用。
我编写的代码如下:
with open('file_A.py', 'w') as f:
f.write(content)
f.flush()
os.fsync(f.fileno())
但是file_A.py
没有在程序正常执行完之前生成,怎么解决?
3条答案
按热度按时间lyr7nygr1#
如果你想确保在Python解释器退出时会发生一些事情(不管是什么事情),你可以使用 atexit 模块。
下面是一个例子:
请注意,cleanup() 在主程序中没有显式调用-它只是注册
vohkndzv2#
fsync
只适用于已经写入磁盘的数据。Python输出是缓冲的,所以当write
完成时,数据不一定要写入磁盘。将f.flush()
放在写入之后。kfgdxczn3#
如果你想在代码还在运行的时候创建并写入一个文件,我建议使用一个外部函数来解决这个问题。
“外部函数”是写在另一个文件中的函数。
我是这样解决的:
外部函数.py
主文件.py
正如你所说,它只会在代码结束时才被写入,所以你可以创建另一个运行时间很短的文件,只是为了写入一个文件,你的代码会被中断一小段时间(无论如何都会发生),但它会在代码还在运行的时候把它写入一个文件。