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实现Const详解
Jan 27 Python
使用Python从有道词典网页获取单词翻译
Jul 03 Python
python中的格式化输出用法总结
Jul 28 Python
Python初学时购物车程序练习实例(推荐)
Aug 08 Python
Python cookbook(数据结构与算法)让字典保持有序的方法
Feb 18 Python
python3.6+opencv3.4实现鼠标交互查看图片像素
Feb 26 Python
Python爬虫包BeautifulSoup学习实例(五)
Jun 17 Python
python实现图像检索的三种(直方图/OpenCV/哈希法)
Aug 08 Python
Pytoch之torchvision.transforms图像变换实例
Dec 30 Python
Python接口测试数据库封装实现原理
May 09 Python
python七种方法判断字符串是否包含子串
Aug 18 Python
协程Python 中实现多任务耗资源最小的方式
Oct 19 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 全文搜索和替换的实现代码
2008/07/29 PHP
php获取远程图片体积大小的实例
2013/11/12 PHP
php目录遍历函数opendir用法实例
2014/11/20 PHP
浅谈COOKIE和SESSION区别
2015/07/19 PHP
PHP直接修改表内容DataGrid功能实现代码
2015/09/24 PHP
PHP+swoole实现简单多人在线聊天群发
2016/01/19 PHP
PHP精确计算功能示例
2016/11/29 PHP
php常用字符串String函数实例总结【转换,替换,计算,截取,加密】
2016/12/07 PHP
php实现生成带二维码图片并强制下载功能
2018/02/24 PHP
Linux下 php7安装redis的方法
2018/11/01 PHP
javascript中关于break,continue的特殊用法与介绍
2012/05/24 Javascript
jquery 获取dom固定元素 添加样式的简单实例
2014/02/04 Javascript
JS实现两个大数(整数)相乘
2014/04/28 Javascript
Javascript基础教程之函数对象和属性
2015/01/18 Javascript
JavaScript基础篇(6)之函数表达式闭包
2015/12/11 Javascript
Bootstrap零基础学习第一课之模板
2016/07/18 Javascript
浅谈react 同构之样式直出
2017/11/07 Javascript
vue 组件之间事件触发($emit)与event Bus($on)的用法说明
2020/07/28 Javascript
python清除指定目录内所有文件中script的方法
2015/06/30 Python
不管你的Python报什么错,用这个模块就能正常运行
2018/09/14 Python
python 多个参数不为空校验方法
2019/02/14 Python
Django命名URL和反向解析URL实现解析
2019/08/09 Python
python 如何将数据写入本地txt文本文件的实现方法
2019/09/11 Python
New Balance波兰官方商城:始于1906年,百年慢跑品牌
2017/08/15 全球购物
Farfetch巴西官网:奢侈品牌时尚购物平台
2020/10/19 全球购物
益模软件Java笔试题
2012/03/27 面试题
在使用非全零作为空指针内部表达的机器上, NULL是如何定义
2014/11/09 面试题
日语专业个人的求职信
2013/12/03 职场文书
夜班门卫岗位职责
2013/12/09 职场文书
公司年会主持词
2014/03/22 职场文书
如何撰写一封出色的求职信
2014/04/27 职场文书
小学教师读书活动总结
2014/07/08 职场文书
争先创优心得体会
2014/09/12 职场文书
小学向国旗敬礼活动方案
2014/09/27 职场文书
乡镇干部个人整改措施思想汇报
2014/10/10 职场文书
使用CSS自定义属性实现骨架屏效果
2022/06/21 HTML / CSS