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中pandas.DataFrame的简单操作方法(创建、索引、增添与删除)
Mar 12 Python
Python编程给numpy矩阵添加一列方法示例
Dec 04 Python
python 限制函数调用次数的实例讲解
Apr 21 Python
python递归全排列实现方法
Aug 18 Python
python使用magic模块进行文件类型识别方法
Dec 08 Python
使用python来调用CAN通讯的DLL实现方法
Jul 03 Python
Python将string转换到float的实例方法
Jul 29 Python
Python下应用opencv 实现人脸检测功能
Oct 24 Python
Python脚本导出为exe程序的方法
Mar 25 Python
在django中form的label和verbose name的区别说明
May 20 Python
pycharm实现猜数游戏
Dec 07 Python
浅析python实现动态规划背包问题
Dec 31 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同步的实现方法
2009/10/21 PHP
微信支付开发交易通知实例
2016/07/12 PHP
vmware linux系统安装最新的php7图解
2019/04/14 PHP
使用js修改客户端注册表的方法
2013/08/09 Javascript
jQuery实现鼠标经过图片预览大图效果
2014/04/10 Javascript
深入理解JavaScript系列(28):设计模式之工厂模式详解
2015/03/03 Javascript
jquery插件unobtrusive实现片段式加载
2015/06/15 Javascript
jQuery移动端日期(datedropper)和时间(timedropper)选择器附源码下载
2016/04/19 Javascript
AngularJS改变元素显示状态
2017/04/20 Javascript
微信小程序开发之animation循环动画实现的让云朵飘效果
2017/07/14 Javascript
js实现多张图片延迟加载效果
2017/07/17 Javascript
解决iview打包时UglifyJs报错的问题
2018/03/07 Javascript
Vue axios全局拦截 get请求、post请求、配置请求的实例代码
2018/11/28 Javascript
vue项目中使用AES实现密码加密解密(ECB和CBC两种模式)
2019/08/12 Javascript
解决layui table表单提示数据接口请求异常的问题
2019/09/24 Javascript
Jquery+javascript实现支付网页数字键盘
2020/12/21 jQuery
[50:48]LGD vs CHAOS 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
Python中super关键字用法实例分析
2015/05/28 Python
Python异常处理操作实例详解
2018/08/28 Python
详解pandas安装若干异常及解决方案总结
2019/01/10 Python
pytorch制作自己的LMDB数据操作示例
2019/12/18 Python
高考考python编程是真的吗
2020/07/20 Python
HMV日本官网:全球知名的音乐、DVD和电脑游戏零售巨头
2016/08/13 全球购物
美国女士时尚珠宝及配饰购物网站:Icing
2018/07/02 全球购物
自主招生自荐信格式
2013/12/03 职场文书
高二生物教学反思
2014/01/27 职场文书
上班看电影检讨书
2014/02/12 职场文书
竞选卫生委员演讲稿
2014/04/28 职场文书
群众路线个人剖析材料及整改措施
2014/11/04 职场文书
孕妇离婚协议书范本
2014/11/20 职场文书
2015年财务试用期工作总结
2014/12/24 职场文书
关于调整工作时间的通知
2015/04/24 职场文书
教师读书笔记
2015/06/29 职场文书
会计专业2019暑假实习报告
2019/06/21 职场文书
HTML速写之Emmet语法规则的实现
2021/04/07 HTML / CSS
彩虹社八名人气艺人全新周边限时推出,性转女装男装一次拥有!
2022/04/01 日漫