Python tempfile 模块:临时文件与文件夹的创建及生命周期管理

Ruby
Ruby
发布时间:2026-10-15 | 1人浏览过
原创

本文详解 Python 标准库 tempfile 模块的核心用法,涵盖获取系统临时目录、使用 mkdtemp 创建临时文件夹,以及通过 mkstemp 和 TemporaryFile 生成临时文件。重点解析文件关闭时的自动删除机制、自定义前缀后缀与路径指定,以及文本与二进制模式的读写操作,帮助开发者安全高效地处理临时资源。

一、简介

本文主要介绍 Python 中临时文件及临时文件夹的使用方法。

核心功能由 tempfile 模块提供:


pip install tempfile

https://docs.python.org/3/library/tempfile.html

二、临时文件夹

2.1 获取系统临时目录


# 获取临时文件夹
tmpdir = tempfile.gettempdir()
print(tmpdir) #/tmp

2.2 创建临时文件夹


# 方式一:生成默认临时文件夹
tmpdir = tempfile.mkdtemp()
print(tmpdir) #/tmp/tmpui77cgud

# 方式二:生成自定义临时文件夹(指定前缀、后缀、目录,可指定其中一部分),suffix:后缀, prefix:前缀, dir:目录

tmpdir = tempfile.mkdtemp(suffix='_txt', prefix='tp_dir_', dir='/home/tmp/py_rs_file')

print(tmpdir) # /home/tmp/py_rs_file/tp_dir_06l_o2dm_txt

三、临时文件

3.1 创建不自动删除的临时文件


# 方式一:生成默认临时文件,默认为二进制文件

tmpfile = tempfile.mkstemp()[1]
print(tempfile) #/tmp/tmp75kazf_8
# 数据写入
with open(tmpfile, 'w+') as t_f:
    t_f.writelines('hello world')

# 方式二:生成自定义临时文件(指定前缀、后缀、目录、文件类型参数,可指定其中一部分),suffix:后缀, prefix:前缀, dir:目录, text:文件类型,True为文本,false为二进制

tmpfile = tempfile.mkstemp(suffix='.txt', prefix='tp_', dir='/home/tmp/py_rs_file', text=True)[1]
print(tempfile) # /home/tmp/py_rs_file/tp_pn2973g0.txt

# 数据写入
with open(tmpfile, 'w+') as t_f:
    t_f.writelines('hello world')

3.2 创建自动删除的临时文件


# 方式一:创建临时文件,文件关闭时自动删除
tmpfile = tempfile.TemporaryFile(mode='w+t')
tmpfile.write('hello world') ##数据写入
tmpfile.seek(0)
tmpTxt = tmpfile.read() #数据读取
print(tmpTxt)
tmpfile.close() #关闭时文件自动删除

# 方式二:创建临时文件,文件关闭时根据delete参数确定是否自动删除, True:删除  False:不删除
with tempfile.NamedTemporaryFile(delete=False) as tmpfile:
    file_name = tmpfile.name
    print(file_name) #/tmp/tmp73zl8gmn
    tmpfile.write('hello world'.encode())
    tmpfile.seek(0)
    tmpTxt = tmpfile.read().decode()
    print(tmpTxt)

# 方式三:创建自定义临时文件,文件关闭时可根据delete参数确定是否自动删除, True:删除  False:不删除
# 其他配置参数有,mode:文件模式(w+b为二进制模式(默认),w+t为文本模式),suffix:后缀, prefix:前缀, dir:目录
with tempfile.NamedTemporaryFile(mode='w+t', suffix='.txt', prefix='tp_', dir='/home/tmp/py_rs_file',delete=False) as tmpfile:
    file_name = tmpfile.name
    print(file_name) #/home/tmp/py_rs_file/tp_fcwpmh3l.txt
    tmpfile.write('hello world')
    tmpfile.seek(0)
    tmpTxt = tmpfile.read()
    print(tmpTxt)

根据具体业务场景,临时资源可以直接调用内存或数据库进行存储。

技术交流

欢迎转载、收藏,如有收获请点赞支持!

到此这篇关于 Python 使用 tempfile 包轻松无痕运行代码的文章就介绍到这了,更多相关 Python tempfile 包内容请搜索本站以前的文章或继续浏览下面的相关文章,希望大家以后多多支持本站!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表