【发布时间】:2013-07-14 12:58:20
【问题描述】:
如果有办法在程序关闭之前执行某项操作,我正在徘徊。我正在运行一个程序很长时间,我确实希望能够关闭它并将数据保存在文本文件或其他东西中,但是我无法干扰我正在运行的while True 循环,并且简单地保存每个循环的数据将是非常无效的。
那么当我点击x 或销毁程序时,有没有办法可以保存数据,比如列表?我一直在查看 atexit 模块,但没有运气,除非我将程序设置为在某个时间点完成。
def saveFile(list):
print "Saving List"
with open("file.txt", "a") as test_file:
test_file.write(str(list[-1]))
atexit.register(saveFile(list))
这是我整个atexit 代码的一部分,就像我说的,当我将它设置为通过while loop 关闭时它运行良好。
这样可以在应用程序终止时保存一些东西吗?
【问题讨论】:
-
您应该注册一个 SIGINT 处理程序:stackoverflow.com/q/1112343/624900
-
当一个程序被杀死时,它在死亡之前无法做任何事情。最好为定期终止提供一些用户界面
-
@MichaelButscher 取决于kill的类型,可以捕获SIGINT和SIGTERM,不能捕获SIGKILL
-
@jterrace 从问题的内容来看,我认为他的意思是 SIGKILL,但我应该说得更清楚