如果程序失败,Python不会删除临时文件

时间:2016-03-25 19:11:30

标签: python temporary-files

我正在编写一个程序,除其他外,它使用临时文件,使用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条款,因为我必须写这么多次(有很多点,我的程序可能会失败)。

1 个答案:

答案 0 :(得分:1)

首先,使用with语句和pass delete=False to the constructor

然后,您需要在程序中进行必要的错误处理。捕获异常(请参阅try..finally)并在程序退出期间清除它是否成功或崩溃。

或者,在执行文件时保持文件处于打开状态,以防止自动删除关闭在执行之前将其删除。这可能会在Windows上出现问题,因为它使用打开的文件会产生冲突。