Python如何在电脑突然关机的情况下保存txt文件?

问题描述


我正在做一个小型的视觉项目,该项目将通过我的鼠标移动来生成
为了实现这一点,我正在相当快地从我的电脑记录我的鼠标数据(可能高达 20 个日志/秒)。
我只是将我的数据一次附加到 .txt 一行。

目前,我使用以下方法附加到我的数据文件中:

import time

file_object = open('./logs/test.txt','a+',encoding="utf-8")

while True:
    file_object.write(f"{time.time()}\n")
    time.sleep(1)

file_object.close()

在这种情况下,我知道 file_object 不会关闭和保存,这是我的观点。
如果我的脚本没有正确退出,比如我要关闭我的电脑,或者我没电了。
日志不会被保存,我已经丢失了所有数据。

我知道将 with 附加到文档的方式应该可以节省硬关机,但是我使用了很多函数和其他 with 语句,从我附加到 .txt文件,我看不出如何实现它。

换句话说,我真的在寻找一种方法来检测硬关机并在计算机死机之前调用 file_object.close() 来保存文档。
或者当然还有其他聪明的选择。

启发我:)
感谢您的帮助

解决方法

Id 只需关闭并重新打开每个日志条目上的文件。它应该能够处理 3 个日志/秒。

import time

while True:
    file_object = open('./logs/test.txt','a+',encoding="utf-8")
    file_object.write(f"{time.time()}\n")
    file_object.close()
    time.sleep(1)
,

如果您使用的是 Windows,则可以使用 Win32Api 功能。对此进行更好的描述:

Detect shutdown event with python

,

你也可以使用这个

导入时间

虽然为真:

with open('./logs/test.txt',encoding="utf-8") as file_object:

    file_object.write(f"{time.time()}\n")

    time.sleep(1)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...