问题25:如何使用临时文件
临时文件功能:存储临时数据到磁盘上;
临时文件特点:不用命名,关闭后悔自动被删除;
案例:
某项目中,我们从传感器采集数据,每收集到1G数据后,做数据分析,最终只保存分析结果。这样会产生很大的临时数据,如果这些临时数据常驻内存,将消耗大量内存资源,我们可以使用临时文件存储这些临时数据(进行外部存储,如存到磁盘上)。
Python中使用临时文件:
1)方法:使用标准库tempfile模块下的TemporaryFile、NamedTemporaryFile对象,创建临时文件;
2)TemporaryFile和NamedTemporaryFile的区别:NamedTemporaryFile会创建一个带名字的临时文件,TemporaryFile创建的临时文件不带名字;
3)TemporaryFile创建的临时文件,不能通过系统的文件路径找到;只能通过文件对象来访问它;
4)
二、创建临时文件
1)用TemporaryFile创建临时文件
格式:TemporaryFile(mode = 'w+b', bufsize = '', suffix = '', prefix = 'tmp', dir = None, delete = True)
#mode:默认‘wb’权限;
#delete = True:默认为True,也就是说关闭文件时将其删除;可以定义delete = False,这样临时文件关闭时不会被删除;
#创建临时文件,并返回一个文件对象,此临时文件只能通过返回的文件对象f进行访问,不能通过系统文件路径访问;因此它只能通过当前进程进行访问;
from temfile imort TemporaryFile, NamedTemporaryFile #创建临时文件,并返回一个文件对象,此临时文件只能通过返回的文件对象f进行访问,不能通过系统文件路径访问; f = TemporaryFile() #将临时数据写入临时文件 f.write('abcdefg' * 10000) #访问临时数据 #将文件指针移到开始 f.seek(0) #读取临时文件的前n字节 f.read(n)
2)用NamedTemporaryFile创建临时文件
格式: NamedTemporaryFile(mode='wb', bufsize=-1, suffix='', prefix='tmp', dir=None, delete=True)
#mode:默认‘wb’权限;
#delete = True:默认为True,也就是说关闭文件时将其删除;可以定义delete = False,这样临时文件关闭时不会被删除;
#创建临时文件时,不直接是文件对象;
#有NamedTemporaryFile创建的临时文件有名字和文件路径,因此它可以被多个进程同时访问;
from tempfile import TemporaryFile, NamedTemporaryFile ntf = NamedTemporaryFile() #NamedTemporaryFile(mode='wb', bufsize=-1, suffix='', prefix='tmp', dir=None, delete=True) #ntf的属性:ntf.close、ntf.delete、ntf.name、ntf.close_called、ntf.file、ntf.unlink #ntf的name属性,也就是临时文件在文件系统下的文件路径,其中文件名字为:tmpgpaunlqa #可以通过访问ntf的name属性,来访问该临时文件 print(ntf.name) #输出:C:UsersADMINI~1AppDataLocalTemp mpgpaunlqa