Python 在脚本评估期间删除临时文件

Python 在脚本评估期间删除临时文件,python,python-3.x,temporary-files,Python,Python 3.x,Temporary Files,我使用的是python包,它严重依赖于存储中间结果。创建的临时文件非常大,在运行更大的计算时,我遇到了一个问题,即/tmp目录已满,脚本失败,出现磁盘已满错误(我们讨论的是10到100秒的GB)。我找到了一个解决问题的方法,创建一个本地文件夹,比如说$HOME/tmp,然后执行以下操作 import tempfile tempfile.tempdir='$HOME/tmp' 导入cdo模块之前。虽然这对我来说是可行的,但如果我想让其他人也使用我的脚本,那就有点麻烦了。因此,我想知道是否有一种更

我使用的是python包,它严重依赖于存储中间结果。创建的临时文件非常大,在运行更大的计算时,我遇到了一个问题,即
/tmp
目录已满,脚本失败,出现
磁盘已满
错误(我们讨论的是10到100秒的GB)。我找到了一个解决问题的方法,创建一个本地文件夹,比如说
$HOME/tmp
,然后执行以下操作

import tempfile
tempfile.tempdir='$HOME/tmp'
导入
cdo
模块之前。虽然这对我来说是可行的,但如果我想让其他人也使用我的脚本,那就有点麻烦了。因此,我想知道是否有一种更优雅的方法来解决这个问题,例如,定期告诉
tmpfile
清除所有临时文件(通常只有在脚本完成后才这样做)。从我的角度来看,这是可能的,因为我正在运行一个长循环,每次迭代都会生成一个命名文件,并且在迭代期间创建的所有临时文件在之后都将被丢弃。

如图所示:您可以在上下文管理器中使用:

with tempfile.TemporaryFile() as fp:
    fp.write(b'Hello world!')
    fp.seek(0)
    fp.read()
这样,当上下文退出时,它们将被删除


…您对
cdo
如何使用tempfiles有那么多的控制吗?

只需使用中讨论的tempfile模块,它将在文件关闭时自动删除temp文件。@MeterLongCat正如问题中所述,cdo使用
tempfile
,我需要在脚本完成之前删除。不幸的是,我无法控制cdo在创建时传递给
TemporaryFile()
实例的参数。不幸的是,我没有这种控制权,但这个示例还是很好的……对此我深表歉意!