当前位置: 首页 > news >正文

python3从入门到精通(十三): tempfile模块

tempfile模块详解

  • 一、基本概念
  • 二、常用函数
    • 函数常用参数:
    • 2.1、TemporaryFile()函数
    • 2.2、NamedTemporaryFile()函数
    • 2.3、TemporaryDirectory()函数
    • 2.4、SpooledTemporaryFile()函数
  • 三、低级API
    • 3.1、mkstemp()函数
    • 3.2、mkdtemp()函数
  • 四、全局配置
  • 五、案例
    • 5.1、生成临时文件供其他程序使用

一、基本概念

tempfile 是Python内置的临时文件/目录处理模块,用来创建用完即删、自动清理、不会冲突的临时文件和文件夹。

核心优势:
1、自动生成唯一文件名,不会覆盖已有文件
2、支持自动删除(关闭即删)
3、无需手动管理文件删除

二、常用函数

函数 / 类用途是否自动删除
TemporaryFile()临时文件(无名字)关闭自动删除
NamedTemporaryFile()带名字的临时文件关闭自动删除
SpooledTemporaryFile()内存临时文件(高效)关闭自动删除
TemporaryDirectory()临时文件夹退出自动删除
mkstemp()低级创建临时文件不自动删
mkdtemp()低级创建临时目录不自动删

函数常用参数:

  • mode=‘w+b’:指定文件的打开模式,默认是 ‘w+b’
  • delete=True:关闭后自动删除(默认)
  • prefix=‘tmp_’:指定临时文件或目录名的前缀
  • suffix=‘.txt’:指定临时文件或目录名的后缀
  • dir=‘./’:指定临时文件或目录的存储路径。如果不指定,则使用系统的临时文件目录(通过 tempfile.gettempdir() 获取)

2.1、TemporaryFile()函数

创建无名字临时文件,关闭自动删除,无法被其他进程访问
1、完全匿名,其他程序无法访问
2、只支持二进制模式(默认)
3、文件对象被关闭,文件就会立即被销毁

importtempfile# 默认模式为 'w+b',创建临时文件(二进制模式)withtempfile.TemporaryFile()asf:f.write(b"Hello Temp File!")# 写入数据f.seek(0)# 回到文件开头print(f.read())# 退出with后,文件自动被删除

2.2、NamedTemporaryFile()函数

创建带名字的临时文件,可通过 name 属性获取路径,关闭自动删除

withtempfile.NamedTemporaryFile(mode='w+t',encoding='utf-8')asf:print("临时文件路径: ",f.name)# 可以拿到文件名f.write("临时文件内容")f.seek(0)print(f.read())# 退出with后,文件自动被删除# 创建带后缀和前缀,并且指定路径,最后不删除的临时文件withtempfile.NamedTemporaryFile(suffix='.log',prefix='app_',delete=False,dir="./")asf:print(f.name)# 类似 /tmp/app_xxx.log# 手动删除文件os.remove(f.name)print('临时文件已手动删除')

2.3、TemporaryDirectory()函数

创建临时文件夹,退出时整个目录会递归的自动删除

importtempfileimportoswithtempfile.TemporaryDirectory()astmpdir:print(f'临时目录已创建:{temp_dir}')# 在临时目录里创建文件file_path=os.path.join(tmpdir,"test.txt")withopen(file_path,'w')asf:f.write("hello")# 退出with后,整个目录及创建的文件均被自动删除

2.4、SpooledTemporaryFile()函数

内存级临时文件,数据首先会保存在内存中,直到达到指定阈值 (max_size),才会被真正写入磁盘上的临时文件,性能高。

# max_size=1024 表示数据超出 1KB 后才会写入磁盘withtempfile.SpooledTemporaryFile(max_size=1024,mode='w+t')asspooled:spooled.write('A'*100)# 写入 100 字节,仍在内存中print(spooled._rolled)# 输出 False,表示数据仍在内存spooled.write('B'*1024)# 写入 1024 字节,此时总大小 1124 > 1024print(spooled._rolled)# 输出 True,表示数据已转储到磁盘

三、低级API

3.1、mkstemp()函数

创建临时文件,不会自动删除,返回文件描述符 + 路径

fd,path=tempfile.mkstemp(suffix='.log',prefix='app_',dir='./')print("临时文件路径: ",path)# 手动关闭、手动删除os.close(fd)os.unlink(path)

3.2、mkdtemp()函数

创建临时目录,不会自动删除

tmp_dir=tempfile.mkdtemp()print(tmp_dir)# 用完手动删importshutil shutil.rmtree(tmp_dir)

四、全局配置

# 设置全局临时文件目录tempfile.tempdir="./my_temp"# 设置全局前缀tempfile.template="myapp_temp_%s"# 之后创建的所有临时文件都会用这个配置withtempfile.NamedTemporaryFile()asf:print(f.name)# 获取系统默认临时文件夹路径print(tempfile.gettempdir())# 获取临时文件名模板print(tempfile.gettempprefix())

五、案例

5.1、生成临时文件供其他程序使用

importtempfileimportsubprocessimportos# 创建一个带名字的临时脚本文件withtempfile.NamedTemporaryFile(mode='w',suffix='.sh',delete=False)asf:f.write("#!/bin/bash\necho 'hello from temp script'")f.flush()# 让其他程序使用这个临时文件result=subprocess.run(['bash',f.name],capture_output=True,text=True)print(result.stdout)# 手动删除(因为 delete=False)os.unlink(f.name)print("临时文件已清理")
http://www.cnnetsun.cn/news/3556417.html

相关文章:

  • 高级爵士舞《Take My Hand》模块化学习与工程化训练指南
  • 护脊床垫选购指南:科学支撑脊椎健康
  • 终极Windows Defender移除指南:深度解析完全卸载Windows安全组件的专业方案
  • Unlock Music Electron:打破音乐枷锁,让加密音频重获自由
  • NomNom存档编辑器终极指南:解锁《无人深空》无限可能
  • 3步合并B站缓存视频:Android离线观看完整解决方案
  • JumpServer开源堡垒机:4A安全体系与分布式架构解析
  • AI销售工具中,客户阶段划分的原则应该怎么设定?
  • 最大熵原理:贝叶斯推理的认知地基与约束工程
  • 深入解析McBSP接收配置:帧同步、数据延迟与压扩技术实战
  • # 软考软件设计师题目总结 2026-07-21 05:58
  • WaveTools终极指南:如何用开源工具一键解锁鸣潮120帧并深度分析抽卡数据
  • 如何让小爱音箱变身智能音乐中心:XiaoMusic完整指南
  • 3分钟上手!Video-subtitle-extractor:本地化视频硬字幕提取终极指南
  • 威廉·欧奈尔这套七个字母的选股法,我在A股测了一遍(附源代码)
  • 古诗词知识图谱与智能分析系统开发实践
  • 错题补题解1
  • 电脑中病毒后的应急响应:从排查到预防的全链路安全实践
  • C++ IO流实战:从基础到高效文件读写与格式化输出
  • Spring Boot 3与Vue 3企业级博客后台实战:从零构建全栈项目
  • 安卓端到端测试_android-e2e-testing
  • 算一笔账要跑4个部门:年度TOP客户采购占比,本体语义怎么算出来
  • 如何快速美化Mac微信界面:5大主题模式终极个性化指南
  • 响应式编程与Kafka结合实现高并发消息处理
  • 哔咔漫画下载器终极指南:5个简单步骤打造个人离线漫画图书馆
  • Vue+SpringBoot健身房管理系统实战:前后端分离项目从零搭建到部署
  • 中美AI发展路径差异与本土化创新思考
  • S7-1200以太网通信配置与优化实战指南
  • 国学启蒙≠背三字经:2026年儿童传统文化学习的新思路
  • QMCDecode终极指南:3步解锁QQ音乐加密音频的免费方案