Python标准库轻松管理临时文件,告别手动删缓存

你是不是也遇到过这样的情况:写脚本处理一批图片,中间生成一堆临时缩略图,跑完发现满桌都是 temp_001.jpgtmp_data.bin……手动一个个删太费劲,忘了删还占空间?其实 Python 标准里早就有现成的“清洁工”——tempfile 模块。

不用自己拼路径,安全又省心

以前有人这么干:

import os
temp_path = '/tmp/myapp_' + str(os.getpid()) + '.log'
with open(temp_path, 'w') as f:
f.write('data')
# ……完事还得记得 os.remove(temp_path)
问题一堆:路径硬编码、可能被覆盖、异常时根本没机会删。而 tempfile 一行就搞定:

import tempfile

# 自动创建唯一临时文件,关掉就自动删
with tempfile.NamedTemporaryFile(delete=False, suffix='.csv') as f:
f.write(b'姓名,年龄\n张三,28')
temp_file = f.name # 保留路径备用

# 后续可读取或移动,不用时调用 os.unlink(temp_file)

常用场景一招到位

要一个临时目录?

with tempfile.TemporaryDirectory() as tmpdir:
print(f'临时文件夹在:{tmpdir}')
with open(f'{tmpdir}/config.txt', 'w') as f:
f.write('timeout=30')
# 出了 with 块,整个文件夹连带内容全消失

只想要个不重复的文件名(不创建)?

name = tempfile.mktemp(suffix='.log')  # 如 /var/folders/.../tmpabc123.log
# 注意:mktemp 已弃用,推荐用下面这种更安全的方式
fd, path = tempfile.mkstemp(suffix='.log')
os.close(fd) # 创建空文件,返回句柄和路径

小提醒:别踩这些坑

• Windows 下临时文件默认在 C:\Users\xxx\AppData\Local\Temp,Mac/Linux 在 /tmp,不用硬写;
NamedTemporaryFile(delete=True)(默认)在 Windows 上无法二次打开,如需读写分离,加 delete=False 并手动清理;
• 临时文件不是永久存储地,别把重要数据往里扔。

下次写自动化脚本、批量重命名、下载解压中转,直接 import tempfile —— 系统帮你管好“草稿纸”,你只管专心干活。