介绍
tempfile 是 Python 内置的临时文件/目录处理模块,专门用于创建临时文件、临时目录,无需手动管理文件删除、路径冲突,程序退出时会自动清理,非常安全便捷。
作用
- 创建临时文件/文件夹,用完即删
- 自动处理跨平台路径(Windows/Linux/macOS 通用)
- 避免手动管理文件导致的残留、权限问题
- 适合缓存、中间数据、临时计算等场景
临时文件
TemporaryFile() / NamedTemporaryFile():创建后 程序关闭自动删除。
无文件名临时文件
无文件名临时文件(自动删除)
import tempfile
with tempfile.TemporaryFile(mode='w+t') as f:
f.write("这是临时数据")
f.seek(0) # 回到文件开头
print(f.read()) # 读取:这是临时数据
带文件名的临时文件
带文件名的临时文件(更实用,可被其他进程访问)
import tempfile
with tempfile.NamedTemporaryFile(mode='w+t', delete=True) as f:
print("临时文件路径:", f.name) # 打印系统自动生成的路径
f.write("Hello tempfile")
f.seek(0)
print(f.read())
解释:
delete=True:关闭文件 自动删除(默认)mode='w+t':文本模式;'w+b':二进制模式
手动控制删除的临时文件
设置 delete=False,文件不会自动删除,需要手动 os.unlink()。
import tempfile
import os
# 创建不自动删除的临时文件
f = tempfile.NamedTemporaryFile(delete=False)
print("永久临时文件路径:", f.name)
f.write(b"二进制数据")
f.close()
# 手动删除
os.unlink(f.name)
临时目录
存放多个临时文件
TemporaryDirectory():创建临时文件夹,退出自动删除整个目录。
import tempfile
import os
# 创建临时目录
with tempfile.TemporaryDirectory() as tmp_dir:
print("临时目录路径:", tmp_dir)
# 在临时目录里创建文件
file_path = os.path.join(tmp_dir, "test.txt")
with open(file_path, 'w') as f:
f.write("临时目录里的文件")
# 退出 with 后,目录和文件全部自动删除
获取系统临时文件目录
查看当前系统默认的临时文件存放路径:
import tempfile
# 获取系统临时目录
print(tempfile.gettempdir())
# 获取临时文件命名前缀
print(tempfile.gettempprefix())
常用参数说明
| 参数 | 作用 |
|---|---|
mode |
文件模式:w+t(文本) / w+b(二进制) |
delete |
True=自动删除,False=保留 |
dir |
指定临时文件存放目录 |
prefix / suffix |
文件名前缀/后缀(如 prefix="data_") |
encoding |
文本编码(如 utf-8) |
示例(自定义文件名前缀、后缀):
with tempfile.NamedTemporaryFile(prefix="myapp_", suffix=".log") as f:
print(f.name) # 类似 /tmp/myapp_xxxx.log
使用建议
- 优先用
with语句:自动关闭+自动清理,最安全 - 跨平台无需关心路径:
tempfile自动适配系统 - 临时数据一定用临时文件:不要手动创建文件再删,容易残留
- 多文件用
TemporaryDirectory:统一管理,整体删除
总结
tempfile是 Python 内置模块,无需安装NamedTemporaryFile:创建带名字、自动删除的临时文件TemporaryDirectory:创建临时目录with语句是最佳使用方式,安全无残留- 适合缓存、中间计算、临时数据存储等场景