有没有办法注册一个文件,以便在Python退出时删除它,无论它是如何退出的?我正在使用长期存在的临时文件,并希望确保它们被清理干净.
该文件必须具有文件名,并且应尽快关闭其原始句柄 - 将创建数千个这样的文件,并且我需要确保它们仅作为普通文件存在.
Mar*_*ers 12
使用tempfile模块 ; 它创建自动删除的临时文件.
从tempfile.NamedTemporaryFile()文档:
如果delete为true(默认值),则文件一关闭就会被删除.
您可以使用这样的文件对象作为上下文管理器,以便在代码块退出时自动关闭它,或者在解释器退出时让它关闭.
另一种方法是创建一个专用的临时目录,用tempdir.mkdtemp(),并使用shutil.rmtree()你的程序完成时删除整个目录.
最好使用另一个上下文管理器执行后者:
import shutil
import sys
import tempfile
from contextlib import contextmanager
@contextmanager
def tempdir():
path = tempfile.mkdtemp()
try:
yield path
finally:
try:
shutil.rmtree(path)
except IOError:
sys.stderr.write('Failed to clean up temp dir {}'.format(path))
Run Code Online (Sandbox Code Playgroud)
并将其用作:
with tempdir() as base_dir:
# main program storing new files in base_dir
# directory cleaned up here
Run Code Online (Sandbox Code Playgroud)
您可以使用atexit钩子函数执行此操作,但上下文管理器是一种更清晰的方法.
| 归档时间: |
|
| 查看次数: |
6744 次 |
| 最近记录: |