如何正确使用 Python 临时文件
摘要:临时文件通常用来保存无法保存在内存中的数据,或者传递给必须从文件读取的外部程序。一般我们会在/tmp 目录下生成唯一的文件名,但是安全的创建临时文件并不是那么简单,需要遵守许多规则。
本文分享自华为云社区《Python 临时文件那些事》,原文作者:康晓勇。
1、前言
临时文件通常用来保存无法保存在内存中的数据,或者传递给必须从文件读取的外部程序。一般我们会在/tmp 目录下生成唯一的文件名,但是安全的创建临时文件并不是那么简单,需要遵守许多规则。永远不要自己去尝试做这件事,而是要借助库函数实现。而且也要小心清理临时文件。
临时文件引起的最大问题就是,可以预测文件名,导致恶意用户可以预测临时文件名,从而创建软链接劫持临时文件。
2、tempfile 模块介绍
创建临时文件一般使用的模块就是 tempfile,此模块库函数常用的有以下几个:
tempfile.mktemp # 不安全,禁止使用
tempfile.mkstemp # 随机创建 tmp 文件,默认创建的文件在/tmp 目录,当然也可以指定(可以使用)
tempfile.TemporaryFile # 内存中创建文件,文件不会存储在磁盘,关闭后即删除(可以使用)
tempfile.NamedTemporaryFile(delete=True) 当 delete=True 时,作用跟上面一样,当是 False 时,会存储在磁盘(可以使用)
3、 示例介绍
以下几种方式分别介绍了安全的创建临时文件及不安全的方式。
3.1 不正确示例:
不正确 1:
不正确 2:
不正确 3:
3.2 正确示例
正确 1:
正确 2:
正确 3:
版权声明: 本文为 InfoQ 作者【华为云开发者社区】的原创文章。
原文链接:【http://xie.infoq.cn/article/515d1649e06418771693c7aa5】。文章转载请联系作者。
评论