Python tempfile模块生成临时文件和临时目录
tempfile模块专门用于创建临时文件和临时目录,它既可以在UNIX平台上运行良好,也可以在Windows平台上运行良好。
tempfile模块中常用的函数,如表1所示。
表1tempfile模块常用函数及功能
tempfile模块函数 | 功能描述 |
tempfile.TemporaryFile(mode='w+b',buffering=None,encoding=None,newline=None,suffix=None,prefix=None,dir=None) | 创建临时文件。该函数返回一个类文件对象,也就是支持文件I/O。 |
tempfile.NamedTemporaryFile(mode='w+b',buffering=None,encoding=None,newline=None,suffix=None,prefix=None,dir=None,delete=True) | 创建临时文件。该函数的功能与上一个函数的功能大致相同,只是它生成的临时文件在文件系统中有文件名。 |
tempfile.SpooledTemporaryFile(max_size=0,mode='w+b',buffering=None,encoding=None,newline=None,suffix=None,prefix=None,dir=None) | 创建临时文件。与TemporaryFile函数相比,当程序向该临时文件输出数据时,会先输出到内存中,直到超过max_size才会真正输出到物理磁盘中。 |
tempfile.TemporaryDirectory(suffix=None,prefix=None,dir=None) | 生成临时目录。 |
tempfile.gettempdir() | 获取系统的临时目录。 |
tempfile.gettempdirb() | 与gettempdir()相同,只是该函数返回字节串。 |
tempfile.gettempprefix() | 返回用于生成临时文件的前缀名。 |
tempfile.gettempprefixb() | 与gettempprefix()相同,只是该函数返回字节串。 |
提示:表中有些函数包含很多参数,但这些参数都具有自己的默认值,因此如果没有特殊要求,可以不对其传参。
tempfile模块还提供了tempfile.mkstemp()和tempfile.mkdtemp()两个低级别的函数。上面介绍的4个用于创建临时文件和临时目录的函数都是高级别的函数,高级别的函数支持自动清理,而且可以与with语句一起使用,而这两个低级别的函数则不支持,因此一般推荐使用高级别的函数来创建临时文件和临时目录。
此外,tempfile模块还提供了tempfile.tempdir属性,通过对该属性赋值可以改变系统的临时目录。
下面程序示范了如何使用临时文件和临时目录:
importtempfile #创建临时文件 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会自动关闭临时文件 withtempfile.TemporaryFile()asfp: #写入内容 fp.write(b'ILovePython!') #将文件指针移到开始处,准备读取文件 fp.seek(0) #读取文件内容 print(fp.read())#b'ILovePython!' #通过with语句创建临时目录 withtempfile.TemporaryDirectory()astmpdirname: print('创建临时目录',tmpdirname)
上面程序以两种方式来创建临时文件:
第一种方式是手动创建临时文件,读写临时文件后需要主动关闭它,当程序关闭该临时文件时,该文件会被自动删除。
第二种方式则是使用with语句创建临时文件,这样with语句会自动关闭临时文件。
上面程序最后还创建了临时目录。由于程序使用with语句来管理临时目录,因此程序也会自动删除该临时目录。
运行上面程序,可以看到如下输出结果:
C:\Users\admin\AppData\Local\Temp\tmphvehw9z1
两情若是久长时,又岂在朝朝暮暮。
b'ILovePython!'
创建临时目录C:\Users\admin\AppData\Local\Temp\tmp3sjbnwob
上面第一行输出结果就是程序生成的临时文件的文件名,最后一行输出结果就是程序生成的临时目录的目录名。需要注意的是,不要去找临时文件或临时文件夹,因为程序退出时该临时文件和临时文件夹都会被删除。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。