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中Genarator函数用法分析
Apr 08 Python
介绍Python的Django框架中的QuerySets
Apr 20 Python
Python栈类实例分析
Jun 15 Python
Python图形绘制操作之正弦曲线实现方法分析
Dec 25 Python
对python中Matplotlib的坐标轴的坐标区间的设定实例讲解
May 25 Python
Python用csv写入文件_消除空余行的方法
Jul 06 Python
pytorch随机采样操作SubsetRandomSampler()
Jul 07 Python
python 装饰器的使用示例
Oct 10 Python
matplotlib之属性组合包(cycler)的使用
Feb 24 Python
Python离线安装openpyxl模块的步骤
Mar 30 Python
Python面向对象编程之类的概念
Nov 01 Python
Python3的进程和线程你了解吗
Mar 16 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 中的str_replace 函数总结
2007/04/27 PHP
PHP中使用sleep函数实现定时任务实例分享
2014/08/21 PHP
php运行报错Call to undefined function curl_init()的最新解决方法
2016/11/20 PHP
PHP使用递归算法无限遍历数组示例
2017/01/13 PHP
php操作access数据库的方法详解
2017/02/22 PHP
PHP实现权限管理功能示例
2017/09/22 PHP
准确获得页面、窗口高度及宽度的JS
2006/11/26 Javascript
JavaScript 变量、作用域及内存
2015/04/08 Javascript
举例讲解Node.js中的Writable对象
2015/07/29 Javascript
详解JavaScript中的4种类型识别方法
2015/09/14 Javascript
Angular2内置指令NgFor和NgIf详解
2016/08/03 Javascript
js HTML5多图片上传及预览实例解析(不含前端的文件分割)
2016/08/26 Javascript
JavaScript中如何使用cookie实现记住密码功能及cookie相关函数介绍
2016/11/10 Javascript
从零开始学习Node.js系列教程六:EventEmitter发送和接收事件的方法示例
2017/04/13 Javascript
three.js实现3D视野缩放效果
2017/11/16 Javascript
Angular服务Request异步请求的实例讲解
2018/08/13 Javascript
vue中前进刷新、后退缓存用户浏览数据和浏览位置的实例讲解
2018/09/21 Javascript
webpack 从指定入口文件中提取公共文件的方法
2018/11/13 Javascript
微信小程序文章详情页跳转案例详解
2019/07/09 Javascript
Python实现对比不同字体中的同一字符的显示效果
2015/04/23 Python
python统计文本文件内单词数量的方法
2015/05/30 Python
详解django三种文件下载方式
2018/04/06 Python
python模块smtplib实现纯文本邮件发送功能
2018/05/22 Python
Python实现定制自动化业务流量报表周报功能【XlsxWriter模块】
2019/03/11 Python
Python实现字符型图片验证码识别完整过程详解
2019/05/10 Python
python实现海螺图片的方法示例
2019/05/12 Python
JSP和EJB可以共享HttpSession么?EJB里面可以改变session里面的内容
2013/06/05 面试题
酒店员工检讨书
2014/02/18 职场文书
物业总经理助理岗位职责
2014/06/29 职场文书
医学专业大学生职业生涯规划书
2014/10/25 职场文书
幼儿园门卫安全责任书
2015/05/08 职场文书
2016母亲节感恩话语
2015/12/09 职场文书
Nginx 根据URL带的参数转发的实现
2021/04/01 Servers
用Python制作灯光秀短视频的思路详解
2021/04/13 Python
80行代码写一个Webpack插件并发布到npm
2021/05/24 Javascript
详解缓存穿透击穿雪崩解决方案
2021/05/28 Redis