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 相关文章推荐
使用apidocJs快速生成在线文档的实例讲解
Feb 07 Python
idea创建springMVC框架和配置小文件的教程图解
Sep 18 Python
python使用PIL实现多张图片垂直合并
Jan 15 Python
Python学习笔记之抓取某只基金历史净值数据实战案例
Jun 03 Python
python搜索包的路径的实现方法
Jul 19 Python
Python在Matplotlib图中显示中文字体的操作方法
Jul 29 Python
Python Pillow.Image 图像保存和参数选择方式
Jan 09 Python
python实现百度OCR图片识别过程解析
Jan 17 Python
python随机生成大小写字母数字混合密码(仅20行代码)
Feb 01 Python
Python第三方库的几种安装方式(小结)
Apr 03 Python
python def 定义函数,调用函数方式
Jun 02 Python
PyTorch 如何检查模型梯度是否可导
Jun 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 array操作10个小技巧分享
2011/06/23 PHP
解析php取整的几种方式
2013/06/25 PHP
PHP读取文件内容后清空文件示例代码
2014/03/18 PHP
PHP实现模仿socket请求返回页面的方法
2014/11/04 PHP
PHP间隔一段时间执行代码的方法
2014/12/02 PHP
PHP数组的定义、初始化和数组元素的显示实现代码
2016/11/05 PHP
浅析PHP中json_encode与json_decode的区别
2020/07/15 PHP
用js实现控制内容的向上向下滚动效果
2007/06/26 Javascript
基于JQUERY的多级联动代码
2012/01/24 Javascript
JS在textarea光标处插入文本的小例子
2013/03/22 Javascript
基于JavaScript实现继承机制之构造函数方法对象冒充的使用详解
2013/05/07 Javascript
将nodejs打包工具整合到鼠标右键的方法
2013/05/11 NodeJs
用于deeplink的js方法(判断手机是否安装app)
2014/04/02 Javascript
全面解析Bootstrap中nav、collapse的使用方法
2016/05/22 Javascript
JS面试题---关于算法台阶的问题
2016/07/26 Javascript
Vue表单实例代码
2016/09/05 Javascript
微信小程序 swiper组件轮播图详解及实例
2016/11/16 Javascript
基于js中document.cookie全面解析
2017/09/14 Javascript
vue2.0 computed 计算list循环后累加值的实例
2018/03/07 Javascript
微信小程序实现slideUp、slideDown滑动效果及点击空白隐藏功能示例
2018/12/11 Javascript
jQuery提示框插件SweetAlert用法分析
2019/08/05 jQuery
Python中使用装饰器来优化尾递归的示例
2016/06/18 Python
Python SQL查询并生成json文件操作示例
2018/08/17 Python
Python中求对数方法总结
2020/03/10 Python
Python TestSuite生成测试报告过程解析
2020/07/23 Python
Python面向对象实现方法总结
2020/08/12 Python
PyQt5 QDockWidget控件应用详解
2020/08/12 Python
关于Python 解决Python3.9 pandas.read_excel(‘xxx.xlsx‘)报错的问题
2020/11/28 Python
CSS3 Notes: -webkit-box-reflect实现倒影的实例
2016/12/08 HTML / CSS
html5使用canvas绘制一张图片
2014/12/15 HTML / CSS
心得体会的写法
2014/09/05 职场文书
2015年组织委员工作总结
2015/04/23 职场文书
单位实习介绍信
2015/05/05 职场文书
HTML基础-标签分类(闭合标签,空标签,块级元素,行内元素,行级块元素,可替换元素)
2021/03/31 HTML / CSS
SQL实现LeetCode(197.上升温度)
2021/08/07 MySQL
速龙x4-860k处理器相当于i几
2022/04/20 数码科技