tempfile 是 Python 提供的标准库模块,用于创建临时文件和临时目录,主要用于不希望在磁盘上永久保存的中间数据、缓存文件、测试数据等等。
该模块自动处理文件/目录的命名、位置、安全性,并在必要时自动清理,非常适合用在数据处理、单元测试、临时存储等场景中。
◆ ◆ ◆
核心概念
1、临时文件/目录位于系统默认的临时目录(如 /tmp/ 或 C:\Users\xxx\AppData\Local\Temp\)。
2、默认创建的临时文件具有唯一名称,避免命名冲突。
3、tempfile 创建的文件对象支持像普通文件那样读写。
4、临时文件可设置在关闭时自动删除或保留。
5、安全性高:文件权限默认仅限当前用户访问。
6、支持与 with 语句配合使用(上下文管理器)以自动清理。
◆ ◆ ◆
应用举例
例 1:使用 NamedTemporaryFile 写入和读取数据
import tempfile
with tempfile.NamedTemporaryFile(mode='w+', delete=False) as tmp:
tmp.write("hello world")
tmp.seek(0)
print(tmp.read())
print("文件路径:", tmp.name)例 2:创建临时目录并写入文件
import tempfile, os
with tempfile.TemporaryDirectory() as tmpdir:
print("创建临时目录:", tmpdir)
filepath = os.path.join(tmpdir, "example.txt")
with open(filepath, "w") as f:
f.write("data")例 3:使用 gettempdir() 获取系统临时目录
import tempfile
print("系统临时目录路径:", tempfile.gettempdir())例 4:使用 mkstemp() 创建并写入临时文件
import tempfile, os
fd, path = tempfile.mkstemp()
with os.fdopen(fd, 'w') as f:
f.write("temporary content")
print("创建文件:", path)
os.remove(path) # 手动删除例 5:使用 SpooledTemporaryFile 内存文件
import tempfile
with tempfile.SpooledTemporaryFile(max_size=100, mode='w+') as sp:
sp.write("cache in memory")
sp.seek(0)
print(sp.read())◆ ◆ ◆
常用函数速览
tempfile.NamedTemporaryFile(mode='w+b', delete=True, ...)
创建一个命名的临时文件,支持读写,可设置关闭时是否自动删除。
参数:
mode:文件模式(如 'w+', 'rb')
delete:关闭文件时是否删除(默认 True)
返回:临时文件对象(含 .name 属性)
tempfile.SpooledTemporaryFile(max_size=0, mode='w+b', ...)
创建一个临时文件,初始保存在内存中,超出指定大小后写入磁盘。
参数:
max_size:最大内存缓冲大小,单位为字节
返回:文件对象(行为与 NamedTemporaryFile 类似)
tempfile.TemporaryDirectory()
创建一个自动清理的临时目录。
返回:包含 .name 属性的目录对象,可用于上下文管理器
tempfile.gettempdir()
返回当前系统的临时目录路径。
返回:字符串路径
tempfile.mkstemp()
低级接口,返回一个独立的临时文件(不会自动删除)。
返回:文件描述符和完整路径组成的元组 (fd, path)
tempfile.mkdtemp()
低级接口,创建一个唯一命名的临时目录。
返回:字符串路径(不会自动删除)
◆ ◆ ◆
补充说明
1、推荐使用 NamedTemporaryFile() 和 TemporaryDirectory() 配合 with 语句,简洁可靠。
2、使用 mkstemp() 等底层函数时需手动管理删除。
3、创建临时路径时请避免手动命名,以防冲突。
4、对于缓存、日志、测试数据等临时场景,tempfile 是优选工具。
5、若需更复杂的临时存储策略,可结合 shutil、os.path 使用。
“点赞有美意,赞赏是鼓励”
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.