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 制作图片转pdf工具
Jan 30 Python
python安装numpy&安装matplotlib& scipy的教程
Nov 02 Python
Python标准模块--ContextManager上下文管理器的具体用法
Nov 27 Python
Python3网络爬虫中的requests高级用法详解
Jun 18 Python
python实现双色球随机选号
Jan 01 Python
Python 去除字符串中指定字符串
Mar 05 Python
Tensorflow安装问题: Could not find a version that satisfies the requirement tensorflow
Apr 20 Python
3种适用于Python的疯狂秘密武器及原因解析
Apr 29 Python
在Keras中CNN联合LSTM进行分类实例
Jun 29 Python
基于python获取本地时间并转换时间戳和日期格式
Oct 27 Python
详解如何修改jupyter notebook的默认目录和默认浏览器
Jan 24 Python
Python 实现劳拉游戏的实例代码(四连环、重力四子棋)
Mar 03 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
咖啡知识大全
2021/03/03 新手入门
浅析PHP水印技术
2007/02/14 PHP
php数组函数序列之array_pop() - 删除数组中的最后一个元素
2011/11/07 PHP
Symfony数据校验方法实例分析
2015/01/26 PHP
PHP开发框架laravel安装与配置教程
2015/03/13 PHP
PHP判断访客是否手机端(移动端浏览器)访问的方法总结【4种方法】
2019/03/27 PHP
node.js中的fs.renameSync方法使用说明
2014/12/16 Javascript
jquery实现Slide Out Navigation滑出式菜单效果代码
2015/09/07 Javascript
BootStrap中Table分页插件使用详解
2016/10/09 Javascript
详解Javascript函数声明与递归调用
2016/10/22 Javascript
遍历json获得数据的几种方法小结
2017/01/21 Javascript
React降级配置及Ant Design配置详解
2018/12/27 Javascript
新手快速入门JavaScript装饰者模式与AOP
2019/06/24 Javascript
iview实现图片上传功能
2020/06/29 Javascript
Openlayers实现点闪烁扩散效果
2020/09/24 Javascript
[26:21]浴火之凤-TI4世界冠军Newbee战队纪录片
2014/08/07 DOTA
[58:42]DOTA2上海特级锦标赛C组败者赛 Newbee VS Archon第一局
2016/02/27 DOTA
python获取mp3文件信息的方法
2015/06/15 Python
Python爬取网易云音乐上评论火爆的歌曲
2017/01/19 Python
redis之django-redis的简单缓存使用
2018/06/07 Python
Python实现随机漫步功能
2018/07/09 Python
Python实现的对一个数进行因式分解操作示例
2019/06/27 Python
Python 处理文件的几种方式
2019/08/23 Python
Python API 操作Hadoop hdfs详解
2020/06/06 Python
意大利自行车商店:Cingolani Bike Shop
2019/09/03 全球购物
亿阳信通股份有限公司C#笔试题
2016/12/06 面试题
J2EE是技术还是平台还是框架
2016/08/14 面试题
市场部经理岗位职责
2014/04/10 职场文书
志愿者爱心公益活动策划方案
2014/09/15 职场文书
六一领导慰问欢迎词
2015/01/26 职场文书
公司行政助理岗位职责
2015/04/11 职场文书
小学生暑假生活总结
2015/07/13 职场文书
创业计划书之寿司
2019/07/19 职场文书
css height属性中的calc方法详解
2021/06/03 HTML / CSS
pytorch 梯度NAN异常值的解决方案
2021/06/05 Python
python 对图片进行简单的处理
2021/06/23 Python