某项目中,我们从传感器采集数据,每收集到1G数据后,做数据分析,最终只保存分析结果.这样很大的临时数据如果常驻内存,将消耗大量内存资源,我们可以使用临时文件存储这些临时数据(外部存储).
临时文件不用命名,且关闭后会自动被删除。
from tempfile import TemporaryFile, NamedTemporaryFile f = TemporaryFile() #将临时数据(很大)写入到临时文件中 f.write(b'abcdef'*10000) #在某一时刻, 觉得我们手机的临时数据已经足够了, 要访问了。 #要把它们读取到内存当中 f.seek(0) #将文件的指针指回到文件的首部 print(f.read(100)) #每次读取一小部分 print(f.read(100))
使用 TemporaryFile 创建的临时文件没有文件名,在文件系统中找不到,只能被当前进程访问,只能被对象f来访问
使用 NamedTemporaryFile 创建的临时文件有文件名,在文件系统中可以找到,因此可以多个进程同时访问
import tempfile f = tempfile.NamedTemporaryFile() f.write(b'test') print(f.name) f.seek(0) print(f.read())
创建的临时文件在关闭后或者with结束后就自动删除了
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](http://c.biancheng.net/python/)!') # 将文件指针移到开始处,准备读取文件 fp.seek(0) # 读取文件内容 print(fp.read()) # b'I Love Python!'
上面程序以两种方式来创建临时文件:
第一种方式是手动创建临时文件,读写临时文件后需要主动关闭它,当程序关闭该临时文件时,该文件会被自动删除。
第二种方式则是使用 with 语句创建临时文件,这样 with 语句会自动关闭临时文件。
Python使用临时文件 tempfile
最新推荐文章于 2024-09-16 16:32:17 发布