网络宝典
第二套高阶模板 · 更大气的阅读体验

Python标准库怎么管理临时文件?几个实用技巧帮你少踩坑

发布时间:2026-04-16 22:30:26 阅读:4 次

你写个脚本,下载几张图片,处理完就扔掉——结果发现 C:\Users\XXX\AppData\Local\Temp 里堆满了“tmp_20231105_abc.jpg”这类文件,半个月不清理,磁盘空间悄悄缩水。其实 Python 标准里的 tempfile 模块,就是专治这种“临时变永久”的问题。

别再用 os.path.join(tempfile.gettempdir(), 'xxx') 手动拼路径了

手动拼路径不仅容易出错(比如忘记加斜杠、跨平台路径分隔符不一致),还可能让临时文件残留。直接用 tempfile 提供的接口,系统自动选目录、自动命名、还能帮你兜底清理。

创建即用的临时文件

需要立刻写点内容、用完就删?tempfile.NamedTemporaryFile 最省心:

import tempfile

with tempfile.NamedTemporaryFile(delete=False, suffix='.log') as f:
f.write(b'程序运行日志:成功加载配置')
print(f.name) # 输出类似:C:\Users\XXX\AppData\Local\Temp\tmp8x9z1a2b.log

注意 delete=False ——否则 Windows 下文件一关就删不掉了;关掉上下文后,文件还在,你可以把它挪走或继续读。如果真想“用完即焚”,去掉这个参数,文件对象关闭时自动删除。

只想要个安全的临时目录

批量生成中间文件?先建个干净临时文件夹最稳妥:

import tempfile
import os

# 自动创建唯一命名的空目录
temp_dir = tempfile.mkdtemp()
print(temp_dir) # 如:C:\Users\XXX\AppData\Local\Temp\tmp7y2k9q1m

# 里面随便创建文件,处理完再删整个目录
with open(os.path.join(temp_dir, 'data.csv'), 'w') as f:
f.write('id,name\n1,张三')

# 用完调用 shutil.rmtree(temp_dir) 删除整目录

比自己写 os.makedirs('temp_' + str(time.time())) 强多了——不会重名、不污染项目目录、路径也跨平台。

临时文件名,不占磁盘也能用

有时你只需要一个“合法又唯一”的文件名,但还没想好写啥内容。这时候用 tempfile.mkstemp()

import tempfile

fd, path = tempfile.mkstemp(suffix='.txt', prefix='backup_')
print(path) # 如:C:\Users\XXX\AppData\Local\Temp\backup_qw7r2t.txt
os.close(fd) # 记得关掉文件描述符

# 后续可随时 open(path, 'w') 写入

它返回文件描述符和路径,适合需要精细控制底层 IO 的场景(比如配合 os.write())。

最后提醒一句:临时文件不是“不用管”,而是“交给标准库管”。用对 tempfile,脚本跑得安心,C 盘也松一口气。