python中tempfile库用法详解
1、应用场景介绍:
tempfile模块是用来创建临时文件或者文件夹的跨平台工具。在大型数据处理项目中,有的处理结果是不需要向用户最终展示的,但是它们的应用又是贯穿项目始终的,在这种情况下,就需要使用tempfile模块来解决这种问题。
2、tempfile安装
tempfile为内置库,不需要安装。
源码解读:
"""Temporary files.
This module provides generic, low- and high-level interfaces for
creating temporary files and directories. All of the interfaces
provided by this module can be used without fear of race conditions
except for 'mktemp'. 'mktemp' is subject to race conditions and
should not be used; it is provided for backward compatibility only.
The default path names are returned as str. If you supply bytes as
input, all return values will be in bytes. Ex:
>>> tempfile.mkstemp()
(4, '/tmp/tmptpu9nin8')
>>> tempfile.mkdtemp(suffix=b'')
b'/tmp/tmppbi8f0hy'
This module also provides some data items to the user:
TMP_MAX - maximum number of names that will be tried before
giving up.
tempdir - If this is set to a string before the first use of
any routine from this module, it will be considered as
another candidate location to store temporary files.
"""
3、模块方法介绍
tempfile模块主要包括三类函数:
四个高级接口:TemporaryFile、NamedTemporaryFile、SpooledTemporaryFile和TemporaryDirectory,这四个高级接口提供了自动清除功能并且可以作为上下文管理器使用。
函数名 | 描述 |
---|---|
TemporaryFile 和NamedTemporaryFile | 高级临时文件对象创建函数 |
SpooledTemporaryFile | 假脱机模式高级临时文件对象创建函数 |
TemporaryDirectory | 高级临时目录创建函数 |
两个底层函数mkstemp()和mkdtemp(),用于生成临时底层的临时文件和文件夹,在使用完它们的时候需要手动清除。
函数名 | 描述 |
---|---|
mkstemp() | 底层临时文件创建函数 |
mkdtemp() | 底层临时目录创建函数 |
tempfile模块还有一些针对文件、文件夹属性的操作函数gettempdir()、gettempdirb()、gettempprefix、gettempprefixb。
函数名 | 描述 |
---|---|
gettempdir() | 以文本格式返回临时文件夹名函数 |
gettempdirb() | 以二进制格式返回临时文件夹名函数 |
gettempprefix | 以文本格式返回临时文件名前缀 |
gettempprefixb | 以二进制格式返回临时文件名前缀 |
tempfile的所有用户可调用函数和构造函数都带有额外参数,通过这些参数可以实现对临时文件目录和位置的管理。此模块会在共享临时目录中安全地创建临时文件,并给创建临时文随机起个名。
3.1 Temporaryfile函数
Temporaryfile函数返回一个类文件对象用作临时存储区,它使用与mkstemp()函数相同规则的安全重建文件模式,它一关闭就会被销毁(包括针对垃圾收集对象的隐式关闭)。需要注意的是,在Unix系统环境,文件的目录要么根本不创建,要么在文件创建后立即删除。也就是说,代码不会依赖于此函数创建的临时文件,包括它们的名称,这也是这个函数与NamedTemporaryfile函数的不同之处。
语法结构:
TemporaryFile(mode='w+b', buffering=-1, encoding=None,
newline=None, suffix=None, prefix=None,
dir=None)
参数介绍:
- mode参数:默认为w+r,以便文件在被创建时可以执行读写操作。
- buffering、encoding、errors和newline参数:用于解释open()函数行为。
- dir、prefix和suffix参数:与mkstemp()具有相同的含义和默认设置。
示例代码:
import tempfile
# 创建临时文件并写入数据
fp = tempfile.TemporaryFile()
fp.write(b'TemporaryFile Test!')
# 读取数据
fp.seek(0)
res = fp.read()
print(res)
运行结果:
使用上下文管理或销毁文件对象后,临时文件将从文件系统中删除。
示例代码1: 【错误写法】
import tempfile
# 创建临时文件并写入数据
with tempfile.TemporaryFile() as fp:
fp.write(b'TemporaryFile Test!')
# 读取数据
# fp.seek(0) # ValueError: seek of closed file
res = fp.read() # ValueError: read of closed file
print(res)
运行结果:
示例代码2:
import tempfile
# 创建临时文件并写入数据
with tempfile.TemporaryFile() as fp:
fp.write(b'TemporaryFile Test!')
# 读取数据
fp.seek(0)
res = fp.read()
print(res)
运行结果:
3.2 NamedTemporaryfile函数
除了NamedTemporaryfile()函数实现了在文件系统中只有一个可见名之外,其作用与TemporaryFile()功能完全相同。执行完该函数后,我们可以从返回的类文件对象的name属性中检索文件名称。在Unix系统上,在命名的临时文件处于打开状态时,可以使用该名称打开生成的文件。
语法结构:
NamedTemporaryFile(mode='w+b', buffering=-1, encoding=None,
newline=None, suffix=None, prefix=None,
dir=None, delete=True)
参数说明:
- delete参数选项:如果该参数为True(默认),则文件一关闭则被删除。返回的对象始终是一个类文件对象,其文件属性是底层的真实文件对象。也就是说,这个类文件对象可以在with上下文管理中使用,就像普通文件一样。
3.3 SpooledTemporaryfile函数
。。。
3.4 TemporaryDirectory函数
。。。
3.5 mkstemp函数
。。。
3.6 mkdtemp函数
。。。
参考博文:
Python临时文件创建:tempfile模块简介_嵌入式技术的博客-CSDN博客_python 临时文件
Python标准库tempfile的使用总结 - Wan-deuk-i - 博客园
相关文章
- 【Python成长之路】python并发学习:多进程与多线程的用法及场景介绍
- Python中第三方库Requests库的高级用法详解
- Python中生成器和yield语句的用法详解
- Python字符串切片操作知识详解
- [Python] Object spread operator in Python
- Python操作MYSQL数据库
- Python中第三方库Requests库的高级用法详解
- Python聚类算法之基本K均值实例详解
- Python字符串切片操作知识详解
- Python 刷Leetcode题库,顺带学英语单词(22)
- Python OS库详解(一)——OS库简介与路径操作
- Python函数详解(一)——函数的定义、调用及变量
- 华为OD机试 - 信号发射和接收(Java & JS & Python)
- Python语言学习之pandas:DataFrame二维表的简介、常用函数、常用案例(增删改查排序之选择指定列、根据条件选择特定数据、赋值、列名重命名、修改列数据、处理缺失值、列合并、分组之详细攻略
- Python编程语言学习:python语言中快速查询python自带模块&函数的用法及其属性方法、如何查询某个函数&关键词的用法、输出一个类或者实例化对象的所有属性和方法名之详细攻略
- Python语言学习:在python中,如何获取变量的本身字符串名字而非其值/内容及其应用(在代码中如何查找同值的所有变量名)
- Python语言学习:利用python获取当前/上级/上上级目录路径(获取路径下的最后叶目录的文件名、合并两个不同路径下图片文件名等目录/路径案例、正确加载图片路径)之详细攻略
- Python:python语言中与时间有关的库函数简介、安装、使用方法(获取当前时间/计算程序块前后运行时间/模型训练时间或耗费时间)之详细攻略
- Python之tkinter:动态演示调用python库的tkinter带你进入GUI世界(Menu的Command)
- Python:利用python语言绘制多个子图经典案例、代码实现之详细攻略
- Python IDE之Pydev: 基于Eclipse搭建python的编译环境(Eclipse+pydev)简介、安装、使用技巧方法集合之详细攻略
- 已解决2. Set PROTOCOL_BUPFERS_PYTHON_iMPLEMENTATION=python (but this will use pure-Python parsing and w
- 〖Python接口自动化测试实战篇④〗- 接口自动化测试详解
- Python爬虫基础:scrapy框架简介及第一个scrapy爬虫
- Python 自动化测试全攻略:五种自动化测试模型实战详解
- Python中操作mysql的pymysql模块详解
- Python 读取文件四种姿势:实例详解,从此读取文件更得心应手
- python对月饼数据进行可视化,看看哪家最划算