Python tempfile模块生成临时文件和临时目录


Posted in Python onSeptember 30, 2020

tempfile 模块专门用于创建临时文件和临时目录,它既可以在 UNIX 平台上运行良好,也可以在 Windows 平台上运行良好。

tempfile 模块中常用的函数,如表 1 所示。

表 1 tempfile 模块常用函数及功能

tempfile 模块函数 功能描述
tempfile.TemporaryFile(mode='w+b', buffering=None, encoding=None, newline=None, suffix=None, prefix=None, dir=None) 创建临时文件。该函数返回一个类文件对象,也就是支持文件 I/O。
tempfile.NamedTemporaryFile(mode='w+b', buffering=None, encoding=None, newline=None, suffix=None, prefix=None, dir=None, delete=True) 创建临时文件。该函数的功能与上一个函数的功能大致相同,只是它生成的临时文件在文件系统中有文件名。
tempfile.SpooledTemporaryFile(max_size=0, mode='w+b', buffering=None, encoding=None, newline=None, suffix=None, prefix=None, dir=None) 创建临时文件。与 TemporaryFile 函数相比,当程序向该临时文件输出数据时,会先输出到内存中,直到超过 max_size 才会真正输出到物理磁盘中。
tempfile.TemporaryDirectory(suffix=None, prefix=None, dir=None) 生成临时目录。
tempfile.gettempdir() 获取系统的临时目录。
tempfile.gettempdirb() 与 gettempdir() 相同,只是该函数返回字节串。
tempfile.gettempprefix() 返回用于生成临时文件的前缀名。
tempfile.gettempprefixb() 与 gettempprefix() 相同,只是该函数返回字节串。

提示:表中有些函数包含很多参数,但这些参数都具有自己的默认值,因此如果没有特殊要求,可以不对其传参。

tempfile 模块还提供了 tempfile.mkstemp() 和 tempfile.mkdtemp() 两个低级别的函数。上面介绍的 4 个用于创建临时文件和临时目录的函数都是高级别的函数,高级别的函数支持自动清理,而且可以与 with 语句一起使用,而这两个低级别的函数则不支持,因此一般推荐使用高级别的函数来创建临时文件和临时目录。

此外,tempfile 模块还提供了 tempfile.tempdir 属性,通过对该属性赋值可以改变系统的临时目录。

下面程序示范了如何使用临时文件和临时目录:

import tempfile
# 创建临时文件
fp = tempfile.TemporaryFile()
print(fp.name)
fp.write('两情若是久长时,'.encode('utf-8'))
fp.write('又岂在朝朝暮暮。'.encode('utf-8'))
# 将文件指针移到开始处,准备读取文件
fp.seek(0)
print(fp.read().decode('utf-8')) # 输出刚才写入的内容
# 关闭文件,该文件将会被自动删除
fp.close()
# 通过with语句创建临时文件,with会自动关闭临时文件
with tempfile.TemporaryFile() as fp:
# 写入内容
fp.write(b'I Love Python!')
# 将文件指针移到开始处,准备读取文件
fp.seek(0)
# 读取文件内容
print(fp.read()) # b'I Love Python!'
# 通过with语句创建临时目录
with tempfile.TemporaryDirectory() as tmpdirname:
print('创建临时目录', tmpdirname)

上面程序以两种方式来创建临时文件:

第一种方式是手动创建临时文件,读写临时文件后需要主动关闭它,当程序关闭该临时文件时,该文件会被自动删除。

第二种方式则是使用 with 语句创建临时文件,这样 with 语句会自动关闭临时文件。

上面程序最后还创建了临时目录。由于程序使用 with 语句来管理临时目录,因此程序也会自动删除该临时目录。

运行上面程序,可以看到如下输出结果:

C:\Users\admin\AppData\Local\Temp\tmphvehw9z1
两情若是久长时,又岂在朝朝暮暮。
b'I Love Python!'

创建临时目录C:\Users\admin\AppData\Local\Temp\tmp3sjbnwob

上面第一行输出结果就是程序生成的临时文件的文件名,最后一行输出结果就是程序生成的临时目录的目录名。需要注意的是,不要去找临时文件或临时文件夹,因为程序退出时该临时文件和临时文件夹都会被删除。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
跟老齐学Python之Python安装
Sep 12 Python
python 打印直角三角形,等边三角形,菱形,正方形的代码
Nov 21 Python
python 除法保留两位小数点的方法
Jul 16 Python
python实现浪漫的烟花秀
Jan 30 Python
Python实现爬取马云的微博功能示例
Feb 16 Python
numpy库与pandas库axis=0,axis= 1轴的用法详解
May 27 Python
Python更新所有已安装包的操作
Feb 13 Python
Python selenium抓取虎牙短视频代码实例
Mar 02 Python
jupyter notebook清除输出方式
Apr 10 Python
解决pytorch多GPU训练保存的模型,在单GPU环境下加载出错问题
Jun 23 Python
如何使用python自带IDLE的几种方法
Oct 10 Python
Python中用xlwt制作表格实例讲解
Nov 05 Python
Python实现定时监测网站运行状态的示例代码
Sep 30 #Python
python如何实现word批量转HTML
Sep 30 #Python
Python识别验证码的实现示例
Sep 30 #Python
Python列表嵌套常见坑点及解决方案
Sep 30 #Python
python实现感知机模型的示例
Sep 30 #Python
python 实现关联规则算法Apriori的示例
Sep 30 #Python
Python之字典添加元素的几种方法
Sep 30 #Python
You might like
PHP编程之高级技巧——利用Mysql函数
2006/10/09 PHP
别人整理的服务器变量:$_SERVER
2006/10/20 PHP
ThinkPHP登录功能的实现方法
2014/08/20 PHP
php根据日期或时间戳获取星座信息和生肖等信息
2015/10/20 PHP
PHP数组编码gbk与utf8互相转换的两种方法
2016/09/01 PHP
php  PATH_SEPARATOR判断当前服务器系统类型实例
2016/10/28 PHP
IE6/7/8/9不支持exec的简写方式
2011/05/25 Javascript
jquery ajax return没有返回值的解决方法
2011/10/20 Javascript
javascript 获取网页标题代码实例
2014/01/22 Javascript
使用CSS3的scale实现网页整体缩放
2014/03/18 Javascript
jQuery组件easyui基本布局实现代码
2016/08/25 Javascript
用瀑布流的方式在网页上插入图片的简单实现方法
2016/09/23 Javascript
nodejs搭建本地服务器轻松解决跨域问题
2018/03/21 NodeJs
js实现上下左右键盘控制div移动
2020/01/16 Javascript
Openlayers实现点闪烁扩散效果
2020/09/24 Javascript
在GitHub Pages上使用Pelican搭建博客的教程
2015/04/25 Python
对python for 文件指定行读写操作详解
2018/12/29 Python
在linux下实现 python 监控usb设备信号
2019/07/03 Python
django框架使用views.py的函数对表进行增删改查内容操作详解【models.py中表的创建、views.py中函数的使用,基于对象的跨表查询】
2019/12/12 Python
tensorflow之并行读入数据详解
2020/02/05 Python
Django分组聚合查询实例分享
2020/04/29 Python
opencv 图像滤波(均值,方框,高斯,中值)
2020/07/08 Python
Python数据可视化常用4大绘图库原理详解
2020/10/23 Python
python 读取串口数据的示例
2020/11/09 Python
Python爬虫分析微博热搜关键词的实现代码
2021/02/22 Python
深入解析HTML5的IndexedDB索引数据库
2015/09/14 HTML / CSS
来自全球大都市的高级街头服饰:Pegador
2018/01/03 全球购物
Bluebella德国官网:英国性感内衣和睡衣品牌
2019/11/08 全球购物
澳大利亚领先的在线礼品网站:Gifts Australia
2020/08/15 全球购物
美国购买韩国护肤和美容产品网站:Althea Korea
2020/11/16 全球购物
求职简历中个人的自我评价
2013/12/25 职场文书
生物制药专业自我鉴定
2014/02/19 职场文书
中文教师求职信
2014/02/22 职场文书
2014年计划生育工作总结
2014/11/14 职场文书
教师党员个人自我评价
2015/03/04 职场文书
护理心得体会范文
2016/01/22 职场文书