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 相关文章推荐
Python2.5/2.6实用教程 入门基础篇
Nov 29 Python
Python中Random和Math模块学习笔记
May 18 Python
python使用TensorFlow进行图像处理的方法
Feb 28 Python
修改python plot折线图的坐标轴刻度方法
Dec 13 Python
不到20行代码用Python做一个智能聊天机器人
Apr 19 Python
python实现Excel文件转换为TXT文件
Apr 28 Python
python代码编写计算器小程序
Mar 30 Python
python字符串反转的四种方法详解
Dec 02 Python
python3正则模块re的使用方法详解
Feb 11 Python
OpenCV中VideoCapture类的使用详解
Feb 14 Python
anaconda3安装及jupyter环境配置全教程
Aug 24 Python
浅谈python中的多态
Jun 15 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模板之Phpbean的目录结构
2008/01/10 PHP
php adodb连接带密码access数据库实例,测试成功
2008/05/14 PHP
frename PHP 灵活文件命名函数 frename
2009/09/09 PHP
php面向对象全攻略 (八)重载新的方法
2009/09/30 PHP
基于HTTP长连接的"服务器推"技术的php 简易聊天室
2009/10/31 PHP
掌握PHP垃圾回收机制详解
2019/03/13 PHP
PHP单例模式数据库连接类与页面静态化实现方法
2019/03/20 PHP
使用Entrust扩展包在laravel 中实现RBAC的功能
2020/03/16 PHP
用js判断浏览器是否是IE的比较好的办法
2007/05/08 Javascript
13个绚丽的Jquery 界面设计网站推荐
2010/09/28 Javascript
javascript跨域刷新实现代码
2011/01/01 Javascript
手机号码,密码正则验证
2014/09/04 Javascript
js使用for循环与innerHTML获取选中tr下td值
2014/09/26 Javascript
node.js中的fs.close方法使用说明
2014/12/17 Javascript
探析浏览器执行JavaScript脚本加载与代码执行顺序
2016/01/12 Javascript
jQuery+css实现炫目的动态块漂移效果
2016/01/28 Javascript
JavaScript编程中实现对象封装特性的实例讲解
2016/06/24 Javascript
js输出数据精确到小数点后n位代码
2016/07/02 Javascript
详解jQuery简单的表格应用
2016/12/16 Javascript
详解Vue.js动态绑定class
2016/12/20 Javascript
js读取json文件片段中的数据实例
2017/03/09 Javascript
基于JavaScript实现活动倒计时效果
2017/04/20 Javascript
JS获取url参数,JS发送json格式的POST请求方法
2018/03/29 Javascript
vue数据操作之点击事件实现num加减功能示例
2019/01/19 Javascript
Node使用Nodemailer发送邮件的方法实现
2020/02/24 Javascript
[02:18]DOTA2英雄基础教程 育母蜘蛛
2014/01/20 DOTA
[01:02:30]Mineski vs Secret 2019国际邀请赛淘汰赛 败者组 BO3 第三场 8.22
2019/09/05 DOTA
Python中的匿名函数使用简介
2015/04/27 Python
python实现查找excel里某一列重复数据并且剔除后打印的方法
2015/05/26 Python
NetworkX之Prim算法(实例讲解)
2017/12/22 Python
python和mysql交互操作实例详解【基于pymysql库】
2019/06/04 Python
linux面试题参考答案(7)
2014/07/24 面试题
EJB的激活机制
2013/10/25 面试题
中学生学雷锋活动心得体会
2014/03/10 职场文书
慰问信的写作格式及范文!
2019/06/24 职场文书
JS实现扫雷项目总结
2021/05/19 Javascript