我在写一个程序,通过pickle模块缓存一些结果。会发生什么,此刻是,如果我打在CTRL-C,而dump
操作正在发生,dump
被中断,导致文件被破坏(即只有部分写的,所以它不能再load
版如何防止一段代码被Python中的KeyboardInterrupt中断?
有一种方法,使dump
,或一般的代码块,不间断我目前的解决方法看起来是这样的:?
try:
file = open(path, 'w')
dump(obj, file)
file.close()
except KeyboardInterrupt:
file.close()
file.open(path,'w')
dump(obj, file)
file.close()
raise
看来愚蠢,如果它被中断,重新启动的操作,所以我在寻找一种方式推迟中断。我该怎么做?
超级有用,谢谢。 – JeffThompson 2015-11-25 15:39:34
该解决方案比涉及'signal'模块的解决方案更好,因为它更容易正确。我不确定甚至有可能编写一个强大的基于'signal'的解决方案。 – benrg 2017-11-09 09:17:13