我正在编写一个程序,除其他外,它使用临时文件,使用tempfile
库创建。
临时文件创建并填写函数:
def func():
mod_script = tempfile.NamedTemporaryFile(dir='special')
dest = open(mod_script, 'w')
# filling dest
return mod_script
(我使用open()
而非with open()
,因为我在调用func()
后执行临时文件
在mod_script
之外的func()
进行一些操作后,我致电mod_script.close()
。一切正常。
但我有一个问题。如果我的程序失败(或者我中断了它),临时文件就不会删除。
我该如何解决?
我真的不想写try...except...finally
条款,因为我必须写这么多次(有很多点,我的程序可能会失败)。
答案 0 :(得分:1)
首先,使用with
语句和pass delete=False
to the constructor。
然后,您需要在程序中进行必要的错误处理。捕获异常(请参阅try..finally)并在程序退出期间清除它是否成功或崩溃。
或者,在执行文件时保持文件处于打开状态,以防止自动删除关闭在执行之前将其删除。这可能会在Windows上出现问题,因为它使用打开的文件会产生冲突。