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搭建Django应用程序步骤及版本冲突问题解决
Nov 19 Python
Python同时向控制台和文件输出日志logging的方法
May 26 Python
Flask解决跨域的问题示例代码
Feb 12 Python
tensorflow 加载部分变量的实例讲解
Jul 27 Python
Python面向对象程序设计之私有属性及私有方法示例
Apr 08 Python
如何利用Anaconda配置简单的Python环境
Jun 24 Python
Django实现发送邮件找回密码功能
Aug 12 Python
Numpy中对向量、矩阵的使用详解
Oct 29 Python
django框架基于queryset和双下划线的跨表查询操作详解
Dec 11 Python
python  ceiling divide 除法向上取整(或小数向上取整)的实例
Dec 27 Python
Python如何将模块打包并发布
Aug 30 Python
PyCharm 安装与使用配置教程(windows,mac通用)
May 12 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添加图片水印、压缩、剪切的封装类
2015/08/17 PHP
PHP实现的AES 128位加密算法示例
2019/09/16 PHP
setTimeout 不断吐食CPU的问题分析
2009/04/01 Javascript
WEB 浏览器兼容 推荐收藏
2010/05/14 Javascript
JavaScript实现简单图片翻转的方法
2015/04/17 Javascript
JavaScript中的闭包
2016/02/24 Javascript
浅谈JS正则表达式的RegExp对象和括号的使用
2016/07/28 Javascript
JavaScript性能优化之函数节流(throttle)与函数去抖(debounce)
2016/08/11 Javascript
js 判断附件后缀的简单实现方法
2016/10/11 Javascript
微信小程序 数据封装,参数传值等经验分享
2017/01/09 Javascript
详解关于react-redux中的connect用法介绍及原理解析
2017/09/11 Javascript
ES6 javascript中Class类继承用法实例详解
2017/10/30 Javascript
简单了解Ajax表单序列化的实现方法
2019/06/14 Javascript
vue项目配置使用flow类型检查的步骤
2020/03/18 Javascript
Python运算符重载用法实例分析
2015/06/01 Python
网站渗透常用Python小脚本查询同ip网站
2017/05/08 Python
对tensorflow 的模型保存和调用实例讲解
2018/07/28 Python
python之验证码生成(gvcode与captcha)
2019/01/02 Python
Python和Java的语法对比分析语法简洁上python的确完美胜出
2019/05/10 Python
33个Python爬虫项目实战(推荐)
2019/07/08 Python
pytorch方法测试详解——归一化(BatchNorm2d)
2020/01/15 Python
Python selenium模块实现定位过程解析
2020/07/09 Python
VSCode 自定义html5模板的实现
2019/12/05 HTML / CSS
Bodum官网:咖啡和茶壶、玻璃器皿、厨房电器等
2018/08/01 全球购物
消防器材管理制度
2014/01/28 职场文书
高中数学教学反思
2014/01/30 职场文书
教师个人鉴定材料
2014/02/08 职场文书
工程专业应届生求职信
2014/02/19 职场文书
材料员岗位职责
2014/03/13 职场文书
演讲稿祖国在我心中
2014/05/04 职场文书
校庆活动策划方案
2014/06/05 职场文书
工作年限证明模板
2014/11/01 职场文书
见习报告格式范文
2014/11/08 职场文书
小学生优秀评语
2014/12/29 职场文书
表扬信范文
2015/05/04 职场文书
爱岗敬业事迹材料
2019/06/20 职场文书