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入门篇之面向对象
Oct 20 Python
Python中用max()方法求最大值的介绍
May 15 Python
Python的Asyncore异步Socket模块及实现端口转发的例子
Jun 14 Python
python subprocess 杀掉全部派生的子进程方法
Jan 16 Python
python 判断网络连通的实现方法
Apr 22 Python
Python实现的堆排序算法示例
Apr 29 Python
python使用webdriver爬取微信公众号
Aug 31 Python
Linux下python3.6.1环境配置教程
Sep 26 Python
Python实现连接MySql数据库及增删改查操作详解
Apr 16 Python
python sqlite的Row对象操作示例
Sep 11 Python
python 逐步回归算法
Apr 06 Python
Python Django 后台管理之后台模型属性详解
Apr 25 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下检测字符串是否是utf8编码的代码
2008/06/28 PHP
PHP中利用substr_replace将指定两位置之间的字符替换为*号
2011/01/27 PHP
php读取文件内容的几种方法详解
2013/06/26 PHP
PHP中round()函数对浮点数进行四舍五入的方法
2014/11/19 PHP
PHP实现服务器状态监控的方法
2014/12/09 PHP
PHP7新特性foreach 修改示例介绍
2016/08/26 PHP
PHP数组去重的更快实现方式分析
2018/05/09 PHP
laravel框架创建授权策略实例分析
2019/11/22 PHP
ExtJS GridPanel 根据条件改变字体颜色
2010/03/08 Javascript
Javascript面向对象扩展库代码分享
2012/03/27 Javascript
文本框input聚焦失焦样式实现代码
2012/10/12 Javascript
document.createElement()用法及注意事项(ff下不兼容)
2013/03/13 Javascript
javascript 控制input只允许输入的各种指定内容
2014/06/19 Javascript
基于jquery实现的自动补全功能
2015/03/12 Javascript
简单实现AngularJS轮播图效果
2020/04/10 Javascript
深入理解React中何时使用箭头函数
2017/08/23 Javascript
vue2中引用及使用 better-scroll的方法详解
2018/11/15 Javascript
Python实现的简单发送邮件脚本分享
2014/11/07 Python
在类Unix系统上开始Python3编程入门
2015/08/20 Python
Python实现返回数组中第i小元素的方法示例
2017/12/04 Python
pyqt5的QComboBox 使用模板的具体方法
2018/09/06 Python
用pycharm开发django项目示例代码
2018/10/24 Python
python3 下载网络图片代码实例
2019/08/27 Python
Django3.0 异步通信初体验(小结)
2019/12/04 Python
python中pow函数用法及功能说明
2020/12/04 Python
Django自带的用户验证系统实现
2020/12/18 Python
CSS3 calc()会计算属性详解
2018/02/27 HTML / CSS
HTML5中在title标题标签里设置小图标的方法
2020/06/23 HTML / CSS
英国儿童家具专卖店:GLTC
2016/09/24 全球购物
Otticanet英国:最顶尖的世界名牌眼镜, 能得到打折季的价格
2019/02/10 全球购物
屈臣氏乌克兰:Watsons UA
2019/10/29 全球购物
Servlet都有哪些方法?主要作用是什么?
2014/03/04 面试题
模具专业毕业推荐信
2014/03/08 职场文书
学校招生宣传广告词
2014/03/19 职场文书
功夫熊猫观后感
2015/06/10 职场文书
演讲稿之开卷有益
2019/08/07 职场文书