Python临时文件创建:tempfile模块简介
Python临时文件创建:tempfile模块简介
- 一、tempfile模块简介
- 二、tempfile模块主要函数介绍
- 2.1 高级临时文件对象创建函数:Temporaryfile和NamedTemporaryFile
- 2.2 假脱机模式高级临时文件对象创建函数:SpooledTemporaryfile
- 2.3 高级临时目录创建函数:TemporaryDirectory
- 2.4 底层临时文件/目录创建函数:mkstemp和mkdtemp
- 三、tempfile模块的文件/文件夹属性操作函数
一、tempfile模块简介
1、tempfile模块应用场景
Python的
tempfile
模块是用来创建临时文件或者文件夹的跨平台工具。在大型数据处理项目中,有的处理结果是不需要向用户最终展示的,但是它们的应用又是贯穿项目始终的,在这种情况下,我们就需要使用tempfile
模块来解决这种问题。
2、tempfile模块的方法
tempfile模块主要包括三类函数:
- (1)四个高级接口:
TemporaryFile
、NamedTemporaryFile
、SpooledTemporaryFile
和TemporaryDirectory
,这四个高级接口提供了自动清除功能并且可以作为上下文管理器使用。
函数名 | 描述 |
---|---|
TemporaryFile 和NamedTemporaryFile
|
高级临时文件对象创建函数 |
SpooledTemporaryFile
|
假脱机模式高级临时文件对象创建函数 |
TemporaryDirectory
|
高级临时目录创建函数 |
- (2)另外,两个底层函数
mkstemp()
和mkdtemp()
,用于生成临时底层的临时文件和文件夹,在使用完它们的时候需要手动清除。
函数名 | 描述 |
---|---|
mkstemp()
|
底层临时文件创建函数 |
mkdtemp()
|
底层临时目录创建函数 |
- (3)最后,
tempfile
模块还有一些针对文件、文件夹属性的操作函数gettempdir()
、gettempdirb()
、gettempprefix
、gettempprefixb
。
函数名 | 描述 |
---|---|
gettempdir()
|
以文本格式返回临时文件夹名函数 |
gettempdirb()
|
以二进制格式返回临时文件夹名函数 |
gettempprefix
|
以文本格式返回临时文件名前缀 |
gettempprefixb
|
以二进制格式返回临时文件名前缀 |
tempfile
的所有用户可调用函数和构造函数都带有额外参数,通过这些参数可以实现对临时文件目录和位置的管理。此模块会在共享临时目录中安全地创建临时文件,并给创建临时文随机起个名。
二、tempfile模块主要函数介绍
2.1 高级临时文件对象创建函数:Temporaryfile和NamedTemporaryFile
1、Temporaryfile函数
Temporaryfile
函数返回一个类文件对象用作临时存储区,它使用与mkstemp()
函数相同规则的安全重建文件模式,它一关闭就会被销毁(包括针对垃圾收集对象的隐式关闭)。需要注意的是,在Unix系统环境,文件的目录要么根本不创建,要么在文件创建后立即删除。也就是说,代码不会依赖于此函数创建的临时文件,包括它们的名称,这也是这个函数与NamedTemporaryfile
函数的不同之处。
TemporaryFile
函数的调用格式为:
TemporaryFile(mode='w+b', buffering=-1, encoding=None,newline=None, suffix=None, prefix=None, *, error=None)
函数参数选项:
(1)mode
参数:默认为w+r
,以便文件在被创建时可以执行读写操作。
(2)buffering
、encoding
、errors
和newline
参数:用于解释open()
函数行为。
(3) dir
、prefix
和suffix
参数:与mkstemp()
具有相同的含义和默认设置。
下面给出一个典型例子:
import tempfile# 下面创建一个临时文件并写入一些数据
fp = tempfile.TemporaryFile()
fp.write(bb'Hello Xiaoliang!')# 读取数据
fp.seek(0); fp.read()
另外,该函数生成的对象可以用作上下文管理器(参见示例)。完成上下文管理或销毁文件对象后,临时文件将从文件系统中删除。
import tempfilewith tempfile.TemporaryFile() as fp:fp.write(b'Hello Xiaoliang!')fp.seek(0)fp.read()
2、NamedTemporaryfile函数
除了NamedTemporaryfile()
函数实现了在文件系统中只有一个可见名之外,其作用与TemporaryFile()
功能完全相同。执行完该函数后,我们可以从返回的类文件对象的name
属性中检索文件名称。在Unix系统上,在命名的临时文件处于打开状态时,可以使用该名称打开生成的文件。
NamedTemporaryFile
函数的调用格式与TemporaryFile
函数的非常相似,唯一不同的是具有了一个delete
参数:
NamedTemporaryFile(mode='w+b', buffering=-1, encoding=None,newline=None, suffix=None, prefix=None, dir=Nonde, delete=True,*, error=None)
delete
参数选项:如果该参数为True
(默认),则文件一关闭则被删除。返回的对象始终是一个类文件对象,其文件属性是底层的真实文件对象。也就是说,这个类文件对象可以在with
上下文管理中使用,就像普通文件一样。
2.2 假脱机模式高级临时文件对象创建函数:SpooledTemporaryfile
SPOOL技术简介:
SPOOL是Simultaneous Peripheral Operation On-Line
(即外部设备联机并行操作)的缩写,它是关于慢速字符设备如何与计算机主机交换信息的一种技术,通常称为“假脱机技术”。其实,严格意义上说,SPOOL系统既不同于脱机方式,也不同于直接耦合方式,SPOOL技术实际上是一种外围设备同时联机操作技术,又称为排队转储技术。它在输入和输出之间增加了“输入井”和“输出井”的排队转储环节,以消除用户的“联机”等待时间。
SpooledTemporaryFile()
函数除了数据会在内存中进行假脱机外,与TemporaryFile()
完全相同。直到文件大小超过max_size
或直到调用文件的fileno()
方法,此时使用与TemporaryFile()
一样的操作,将内容写入磁盘。
该函数同样返回一个类文件对象,其_file
属性可以是io.BytesIO
(二进制模式)、io.TextIOWrapper
(文本模式)对象或真实的文件对象(调用roller()
函数)。同样的,这个类文件对象可以在with
上下文管理中使用,就像普通文件一样。
该函数还有一个额外的方法rollover()
,它使创建的文件滚寻磁盘上的内容,而不管其大小。SpooledTemporaryFile
函数的调用格式与TemporaryFile()
函数一样,这里就不介绍了。
2.3 高级临时目录创建函数:TemporaryDirectory
TemporaryDirectory
函数使用与mkdtemp()
相同的规则安全地创建临时目录。生成的对象可以用作上下文管理器(这里给出示例)。完成上下文或销毁临时目录对象后,新创建的临时目录及其所有内容将从文件系统中删除。其调用格式如下所示:
TemporaryDirectory(suffix=None, prefix=None, dir=None)
调用该函数后,创建的目录名可以从返回对象的name
属性中检索到。当返回的对象作为上下文管理器时,该名称将被分配给with
语句中as
子句的目标。另外,可以通过调用cleanup()
方法显式清理目标。
2.4 底层临时文件/目录创建函数:mkstemp和mkdtemp
1、底层临时文件创建函数mkstemp()
mkstemp()
函数以尽可能安全的方式创建临时文件,与TemporaryFile()
函数不同,用户需要负责临时文件的删除。其调用格式如下所示:
mkstemp(suffix=None, prefix=None, dir=None, text=False)
函数参数选项:
(1)suffix
:文件后缀,默认为None。如果不是None,文件名将以设置的后缀结尾。注意,mkstemp()
函数不会在文件名和后缀之间加一个点,如果需要可以自行添加。
(2)prefix
:文件前缀,默认为None。如果不是None,文件以该前缀为开头;否则使用默认前缀,默认的前缀是由gettempprefix()
或gettempprefixb()
的返回值确定。
(3)dir
:文件创建的目录,默认为None,如果不是None,则使用默认目录;默认目录是从所使用的系统列表中选择的,但是用户可以通过设置TMPDIR
、TEMP
或TMP
环境变量来控制目录位置。
(4)text
:文本类型,默认为False,即以二进制模式打开。如果为true,则以文本格式打开。
mkstemp()
返回一个元组,该元组包含一个用于打开文件的操作系统级别(OS-leve)句柄(有os.open()
函数返回)和该文件绝对路径名。
2、底层临时目录创建函数mkdtemp()
mkdtemp()
函数以尽可能安全的方式创建临时目录。只有通过用户ID才能读取、写入和搜索目录,同时用户负责删除临时目录及其内容。其调用格式和参数与mkstemp()
相同,这里就不展开介绍了。注意,mkdtemp()
函数只返回新建目录的绝对路径。
三、tempfile模块的文件/文件夹属性操作函数
1、返回临时文件夹名函数:gettempdir和gettempdirb
gettempdir()
返回存放临时文件的文件夹名字,该函数的返回值是tempfile
内的全局变量,也就是说,gettempdir()
返回的文件夹名将作为tempfile
模块中的所有函数dir
参数的默认值。
Python内部搜索一个标准目录列表,用户可以在其中创建文件的目录:
(1)由TMPDIR
环境变量命名的目录;
(2)由TEMP
环境变量命名的目录;
(3)由TMP
环境变量命名的目录。
(4)不同平台特定的位置:
- Windows系统,目录为:
C:\TEMP, C:\TMP, \TEMP, and \TMP
; - 其他系统,目录为:
/tmp, /var/tmp, and /usr/tmp
。
(5)当前工作目录。
另外,还有一个与gettempdir()
作用相同,只是返回的格式二进制的函数gettempdirb()
。
2、返回临时文件前缀函数:gettempprefix和gettempprefix
gettempprefix
以文本格式返回创建的临时文件的前缀;gettempprefixb
以二进制格式返回创建的临时文件的前缀。
Python临时文件创建:tempfile模块简介相关推荐
- python tempfile cleanup_Python tempfile模块:生成临时文件和临时目录
Python tempfile模块:生成临时文件和临时目录 tempfile 模块专门用于创建临时文件和临时目录,它既可以在 UNIX 平台上运行良好,也可以在 Windows 平台上运行良好. te ...
- Python常用模块4-Python的datetime及time模块简介
文章目录 一.Python datetime模块介绍 1.1 有效的类型 1.2 timedelta 类对象 1.2.1 timedelta.total_seconds()方法 1.3 date对象 ...
- python:XML处理模块
python:XML处理模块 简介 XML 漏洞 defusedxml 包 简介 用于处理XML的Python接口分组在 xml 包中. 警告 XML 模块对于错误或恶意构造的数据是不安全的. 如果你 ...
- python tempfile自动删除_Python tempfile模块生成临时文件和临时目录
tempfile 模块专门用于创建临时文件和临时目录,它既可以在 UNIX 平台上运行良好,也可以在 Windows 平台上运行良好. tempfile 模块中常用的函数,如表 1 所示. 表 1 t ...
- python tempfile模块用不了_Python tempfile:坏了还是我做错了?
对于一个小python脚本,我希望使用tempfile模块的临时文件.不知何故,它没有给出预期的行为,我不知道我做错了什么,或者这是一个bug:Python 2.7.2 (default, Jun 1 ...
- python 临时文件夹 的 tempfile模块学习
python的临时文件夹的tempfile模块学习 应用程序经常要保存一些临时的信息,这些信息不是特别重要,没有必要写在配置文件 里,但又不能没有,这时候就可以把这些信息写到临时文件里.其实很 ...
- pig脚本不需要后缀名(python tempfile模块生成pig脚本临时文件,执行)
pig 脚本运行不需要后缀名 pig脚本名为tempfile,无后缀名 用pig -f tempfile 可直接运行 另外,pig tempfile也可以直接运行 这样就可以用python临时文件存储 ...
- python tempfile cleanup_python tempfile 模块---生成临时文件和目录
1 tempfile介绍 tempfile 模块中常用的函数,如下表所示. tempfile 模块函数功能描述tempfile.TemporaryFile(mode='w+b', buffering= ...
- 【Python】OS 模块简介
文章目录 一.OS 模块简介 二.os.system 方法 三.OS 模块中的常用方法 四.参考链接 一.OS 模块简介 os 就是 "operating system" 的缩写, ...
- Python爬虫学习第二章-1-requests模块简介
Python爬虫学习第二章-1-requests模块简介 这一章主要是介绍requests模块的相关知识以及使用 1.requests模块简介: 概述:是python中原生的一款基于网络请求的模块 ...
最新文章
- 【题解】 [HNOI2015]落忆枫音 (拓扑排序+dp+容斥原理)
- 今年你的双11包裹,也是自动驾驶卡车送来的吗?
- ActiveMQ的消息重发策略和DLQ处理
- oracle批次处理数据_Oracle大批量删除数据方法(转)
- java mp3 to wav_java实现wavToMP3格式转换详解
- 循环的时候去删除集合中的元素 java.util.ConcurrentModificationException
- 数据结构拾遗(1) --红黑树的设计与实现(上)
- toolbox、library 的组织
- 3 ELK收集nginx正常和错误日志
- 前端浏览器兼容性网站
- 锁定计算机时共享打印机,共享打印机需要密码,怎么解决?
- 基于RV1126平台imx291分析 --- 运行设备(VIDIOC_STREAMON)
- 2013年,我的推荐博客汇总
- Tikhonov正则化工具包(MATLAB毕业设计用)
- Mac 双系统分区合并
- AI应用第一课:支付宝刷脸登录
- Git 分支篇之远程分支
- Java线程状态总结
- SolidWorks toolbox齿轮再修改方法
- 《CSS禅意花园》读后感