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

时间:2017-06-21 10:55:15

标签: python python-3.x temporary-files

我正在使用python包cdo,它非常依赖tempfile来存储中间结果。创建的临时文件非常大,当运行更大的计算时,我遇到了/tmp目录被填满而脚本失败并出现disk full错误的问题(我们说的是10s到100的GB)。我通过创建一个本地文件夹找到了解决问题的方法,比如说$HOME/tmp然后再做

import tempfile
tempfile.tempdir='$HOME/tmp'

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

1 个答案:

答案 0 :(得分:2)

作为examples显示:您可以在上下文管理器中使用tempfile

with tempfile.TemporaryFile() as fp:
    fp.write(b'Hello world!')
    fp.seek(0)
    fp.read()

当上下文退出时,它们会被删除。

...你对cdo如何使用临时文件有多大的控制权?