Atexit没有在python中注册
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Atexit没有在python中注册相关的知识,希望对你有一定的参考价值。
事实证明问题不同现在我在Tkinter中有一个循环:
def main():
#Global Variables
windows = []
buttons = []
labels = []
messageboxes = []
global theme
theme = 0
listboxes = []
global register
register = []
global path
path = ""
# Lotsa' Code
Tkinter.mainloop()
if __name__ == "__main__":
main()
def save_f():
global register
outFile = open('FobbySave.txt', 'wb')
pickle.dump(register, outFile)
outFile.close()
global register
#At Quit
atexit.register(save_f)
atexit失败了。但是当我尝试打印寄存器时,它没有任何问题。当我把它放在Tkinter循环中时save_f工作,但atexit没有。那么有人能告诉我我做错了什么吗?
Sorry forgot to write atexit the first time. But it's in my code.
编辑:原始代码在这里
import pickle
import atexit
def save_f():
global register
outFile = open('Something.txt', 'wb')
pickle.dump(register, outFile)
outFile.close()
atexit.register(save_f)
答案
看看你的代码我建议尝试这样做:
def main():
# ... everything in main ...
Tkinter.mainloop()
def save_f():
outFile = open('FobbySave.txt', 'wb')
pickle.dump(register, outFile)
outFile.close()
#At Quit
atexit.register(save_f)
if __name__ == "__main__":
main()
问题可能是您在运行main方法后初始化atexit
。因此,在代码被杀死(并停止执行)后,您尝试添加atexit
方法。
以上是关于Atexit没有在python中注册的主要内容,如果未能解决你的问题,请参考以下文章
是否可以更改使用 atexit() 注册的函数中的退出代码?