Python使用临时文件 tempfile

      某项目中,我们从传感器采集数据,每收集到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 语句会自动关闭临时文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值