前言
在实际的项目处理中 , 往往我们并不需要创建文件,仅仅用于中转而已 。这个时候在系统中频繁地创建中转文件,删除中转文件,不仅浪费系统的资源,而且容易被破坏或者篡改,这个时候用临时文件反而更好 。
而Python给我们提供了临时文件操作库:tempfile 。本篇将详细介绍临时文件的应用与处理 。
创建临时文件(TemporaryFile)
一般来说 , 我们通过tempfile.TemporaryFile函数创建临时文件,具体的代码如下所示:
import tempfile
with tempfile.TemporaryFile as temp:
temp.write
temp.seek
print)
print
运行之后 , 效果如下:
其中 , mode表示以什么方式创建并打开临时文件 , 这里w+表示可以读写文件 , t是以文本模式打开文件 。默认写完内容后,文件句柄在末尾,要重新读取文件,需要使用seek回转重定位 。
命令文件
【tempfile库:Python临时文件系统对象】当然,我们创建临时文件是需要使用的,也就是在程序中,我们需要给它一个名字,方便我们进行操作 。我们将上面代码变更一下:
import tempfile
import pathlib
with tempfile.TemporaryFile as temp:
temp.write
temp.seek
print)
f = pathlib.Path
print
f.exists
这里,我们用f变量标记了文件,后面操作的时候,可以使用f进行操作 。当我们调用f.exists函数时,默认临时文件会被删除 。
临时目录(TemporaryDirectory)
在实际的项目中,我们可能并不仅仅只是创建一个临时文件,有时候也会创建一批量的临时文件,比如上传文件时 。这个时候,我们就需要创建一个临时目录 , 在临时目录中创建文件进行操作 。操作完成之后,只要关闭临时目录,就可以批量的关闭临时文件,比单个临时文件要方便许多 。
下面 , 我们就来创建临时的目录,代码如下:
import tempfile
import pathlib
with tempfile.TemporaryDirectory as temp:
f = pathlib.Path
print
a_file = f / &39;
a_file.write_text
b_file = f / &39;
b_file.write_text
c_file = f / &39;
c_file.write_text
print)
print)
print)
f.exists
运行之后,效果如下:
假脱机文件
如果我们处理的临时文件目录数据较少,其实使用SpooledTemporaryFile可能更高效 , 因为它使用一个io.BytesIO或io.StringIO缓冲区在内存中保存内容,直到数据超过一定的大小 , 才写入磁盘,然后用TemporaryFile替代缓冲区 。
具体使用方式如下:
import tempfile
with tempfile.SpooledTemporaryFile as temp:
print
temp.write
temp.seek
print)
运行之后,效果如下:
这里的max_size就是决定文件小于这个值写入缓冲区,大于这个值写入TemporaryFile临时文件 。
当然 , 我们可以强制将缓冲区写入临时文件,可以调用rollover或fileno函数 。具体代码如下所示:
import tempfile
with tempfile.SpooledTemporaryFile as temp:
print
temp.write
temp.seek
temp.rollover
print)
如上面代码所示,加一句temp.rollover就行 。
预测名(NamedTemporaryFile)
从上面的代码,我们可以看到,临时文件单独创建的方式 , 文件名是随机生成的,并不是由程序员指定的,但有时候还需要在名字中包含一些可预测的部分,以便查找和检查文件来进行调用 。
这个时候,指定文件名往往更好 。我们指定文件名规律用NamedTemporaryFile函数 , 代码如下:
import tempfile
import pathlib
tmp_file = tempfile.NamedTemporaryFile
print
运行之后,效果如下:
可以看出来,我们的文件名等于:prefix+random+suffix 。当然,其实该函数还有一个dir参数,可以指定目录 。完整的文件名等于:dir+prefix+random+suffix 。
gettempdir与gettempprefix
在创建临时文件的时候,如果我们没有指定dir,那么该临时文件的路径会跟随平台和设置变化 , 也就是不确定的位置 。这个时候,我们可能需要获取文件的路径以及其他参数,通过gettempdir与gettempprefix可以做到,具体代码如下:
import tempfile
print)
print)
print)
print)
运行之后,效果如下:
gettempdir:返回包含所有临时文件的默认目录
gettempprefix:返回新文件和目录名的字符串前缀 。
而这个2个方法还有一个后缀b的方法,用于返回bytes类型的字符串对象 。当然如果你想自己设置临时目录,并不跟随系统,可以直接使用tempfile.tempdir进行设置 。
import tempfile
tempfile.tempdir=r&39;
print)
运行之后,效果如下:
以上就是朝夕生活(www.30zx.com)关于“tempfile库:Python临时文件系统对象”的详细内容,希望对大家有所帮助!
猜你喜欢
- 今天交给大家一个最简单最快速的电脑临时文件清理方法
- 十大奢侈品鞋子排行榜:Ji妹妹y Choo上榜,第一设计优雅斗胆
- cf真的不行了吗?这么想你就错了
- 九城宣布中止代理CF2 与阿里游戏签定CF全新手游独家发行协议
- Remedy 正为《穿越火线》创作单人剧情
- CF元素加身 详解别克英朗穿越火线版
- 关于我cf的历程1
- 英特尔发布Arc显卡驱动程序30.0.101.1736:支持锐炫A380
- 25岁到30岁十大护肤品排行榜:资生堂上榜,第一价格很贵