Python tempfile模块学习笔记(临时文件)
什么是临时文件?
临时文件是指在程序运行过程中使用的、暂时性的文件。一般这些文件的大小不大,仅仅是用来暂存某些信息,让程序能够正常执行。在程序使用完毕之后,这些文件就应该被及时删除,以节约系统资源。
Python中提供了tempfile
模块,用于生成临时文件和临时目录。
使用tempfile创建临时文件
先导入tempfile
模块:
import tempfile
使用tempfile.NamedTemporaryFile()函数创建临时文件
tempfile.NamedTemporaryFile()
函数用于创建一个临时文件,并返回一个类文件对象(file-like object),这个类文件对象可以像普通文件一样进行读写操作。
import tempfile
with tempfile.NamedTemporaryFile() as f:
f.write(b'hello, world!')
f.seek(0)
print(f.read())
上述代码中,我们使用了with
语句来打开临时文件,并使用write()
方法写入了一些二进制数据。然后我们使用seek()
方法将文件指针移动到文件开头,再使用read()
方法读取整个文件,输出结果为:
b'hello, world!'
需要注意的是,NamedTemporaryFile()
函数默认创建的临时文件会自动删除。如果需要在程序结束后保留临时文件,可以指定delete
参数为False
。
创建临时文件时指定文件名
tempfile.NamedTemporaryFile()
函数默认会自动生成文件名,这种方式可能会对某些应用造成影响。我们可以通过指定prefix
和suffix
参数来自定义文件名。
import tempfile
with tempfile.NamedTemporaryFile(suffix='.txt', prefix='temp_', dir='/tmp') as f:
file_name = f.name
f.write(b'This is a test file.')
f.seek(0)
print(f.read())
print(file_name)
上述代码中,我们指定了文件名的后缀为.txt
,前缀为temp_
,临时文件的存放目录为/tmp
。在打印完文件内容之后,我们输出了实际的文件名,使用print(file_name)
可发现实际的文件名为/tmp/temp_ane7mg_qud.txt
。
使用tempfile.TemporaryFile()函数创建临时文件
tempfile.TemporaryFile()
函数用于创建一个临时文件,并返回一个类文件对象(file-like object)。与NamedTemporaryFile()
函数不同的是,TemporaryFile()
函数创建的临时文件在关闭文件句柄时就会被自动删除。
import tempfile
with tempfile.TemporaryFile() as f:
f.write(b'hello, world!')
f.seek(0)
print(f.read())
上述代码中,我们创建了一个临时文件,并使用write()
方法写入了一些二进制数据。然后我们使用seek()
方法将文件指针移动到文件开头,再使用read()
方法读取整个文件,输出结果为:
b'hello, world!'
需要注意的是,TemporaryFile()
函数默认创建的临时文件句柄是二进制模式,如果需要创建文本模式的临时文件,可以指定mode
参数为t
。
import tempfile
with tempfile.TemporaryFile(mode='w+t') as f:
f.write('hello, world!')
print(f.read())
上述代码中,我们指定了临时文件句柄的模式为文本模式,然后我们使用write()
方法写入了一些文本数据。然后我们使用read()
方法读取整个文件,输出结果为:
hello, world!
使用tempfile创建临时目录
tempfile
模块还可以用于创建临时目录,其主要使用了tempfile.TemporaryDirectory()
函数。
import tempfile
with tempfile.TemporaryDirectory() as dir_path:
with open(dir_path + '/test.txt', 'w') as f:
f.write('hello, world')
with open(dir_path + '/test.txt', 'r') as f:
print(f.read())
上述代码中,我们使用TemporaryDirectory()
函数创建了一个临时目录,然后在其中创建了一个文件test.txt
,并向其中写入了一些数据。最后我们再读取这个文件,并输出其内容。
需要注意的是,与TemporaryFile()
函数一样,TemporaryDirectory()
函数创建的临时目录在程序结束时会被自动删除。
总结
使用tempfile
模块可以方便地创建临时文件和临时目录,并且无需自己手动删除。可以通过NamedTemporaryFile()
函数和TemporaryFile()
函数创建临时文件;通过TemporaryDirectory()
函数创建临时目录。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python tempfile模块学习笔记(临时文件) - Python技术站