如何用tempfile库创建python进程中的临时文件


Posted in Python onJanuary 28, 2021

技术背景

临时文件在python项目中时常会被使用到,其作用在于随机化的创建不重名的文件,路径一般都是放在Linux系统下的/tmp目录。如果项目中并不需要持久化的存储一个文件,就可以采用临时文件的形式进行存储和读取,在使用之后可以自行决定是删除还是保留。

tempfile库的使用

tempfile一般是python内置的一个函数库,不需要单独安装,这里我们直接介绍一下其常规使用方法:

# tempfile_test.py

import tempfile

file = tempfile.NamedTemporaryFile()
name = str(file.name)
file.write('This is the first tmp file!'.encode('utf-8'))
file.close()

print (name)

上述代码执行的任务为:使用tempfile.NamedTemporaryFile创建一个临时文件,其文件名采用的是随机化的字符串格式,作为name这样的一个属性来调用。通过执行这个任务,我们可以查看一般是生成什么样格式的临时文件:

[dechin@dechin-manjaro tmp_file]$ python3 tempfile_test.py 
/tmp/tmppetcksa8
[dechin@dechin-manjaro tmp_file]$ ll
总用量 4
-rw-r--r-- 1 dechin dechin 181 1月 27 21:39 tempfile_test.py
[dechin@dechin-manjaro tmp_file]$ cat /tmp/tmppetcksa8
cat: /tmp/tmppetcksa8: 没有那个文件或目录

在这个python代码的执行过程中,产生了tmppetcksa8这样的一个文件,我们可以向这个文件中直接write一些字符串。这个临时文件被存储在tmp目录下,与当前的执行路径无关。同时执行结束之后我们发现,产生的这个临时文件被删除了,这是NamedTemporaryFile自带的一个delete的属性,默认配置是关闭临时文件后直接删除。

持久化保存临时文件

需要持久化保存临时文件是非常容易的,只需要将上述章节中的delete属性设置为False即可:

# tempfile_test.py

import tempfile

file = tempfile.NamedTemporaryFile(delete=False)
name = str(file.name)
file.write('This is the first tmp file!'.encode('utf-8'))
file.close()

print (name)

这里我们唯一的变动,只是在括号中加上了delete=True这一设定,这个设定可以允许我们持久化的存储临时文件:

[dechin@dechin-manjaro tmp_file]$ python3 tempfile_test.py 
/tmp/tmpwlt27ryk
[dechin@dechin-manjaro tmp_file]$ cat /tmp/tmpwlt27ryk
This is the first tmp file!

设置临时文件后缀

在有些场景下对于临时文件的存储有一定的格式要求,比如后缀等,这里我们将临时文件的后缀设置为常用的txt格式,同样的,只需要在NamedTemporaryFile的参数中进行配置即可:

# tempfile_test.py

import tempfile

file = tempfile.NamedTemporaryFile(delete=False, suffix='.txt')
name = str(file.name)
file.write('This is the first tmp file!'.encode('utf-8'))
file.close()

print (name)

由于还是设置了delete=True参数,因此该临时txt文件被持久化的保存在系统中的/tmp目录下:

[dechin@dechin-manjaro tmp_file]$ python3 tempfile_test.py 
/tmp/tmpk0ct_kzs.txt
[dechin@dechin-manjaro tmp_file]$ cat /tmp/tmpk0ct_kzs.txt
This is the first tmp file!

总结概要

本文主要介绍了python中自带的tempfile库对临时文件的操作,通过tempfile库我们可以创建自动删除的或者持久化存储的临时文件,存储路径为Linux系统下的/tmp目录,而我们还可以根据不同的场景需要对产生的临时文件的后缀进行配置。

原文链接为:https://www.cnblogs.com/dechinphy/p/tempfile.html

以上就是如何用tempfile库创建python进程中的临时文件的详细内容,更多关于tempfile库创建临时文件的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
python实现类似ftp传输文件的网络程序示例
Apr 08 Python
Python中绑定与未绑定的类方法用法分析
Apr 29 Python
Python实现对字符串的加密解密方法示例
Apr 29 Python
对pandas将dataframe中某列按照条件赋值的实例讲解
Nov 29 Python
一篇文章搞懂Python的类与对象名称空间
Dec 10 Python
在numpy矩阵中令小于0的元素改为0的实例
Jan 26 Python
python读写csv文件的方法
Aug 13 Python
Python中xml和dict格式转换的示例代码
Nov 07 Python
Python安装与卸载流程详细步骤(图解)
Feb 20 Python
自定义Django Form中choicefield下拉菜单选取数据库内容实例
Mar 13 Python
jupyter notebook清除输出方式
Apr 10 Python
python实现马丁策略的实例详解
Jan 15 Python
python基于Kivy写一个图形桌面时钟程序
Jan 28 #Python
python+opencv3.4.0 实现HOG+SVM行人检测的示例代码
Jan 28 #Python
详解Python调用系统命令的六种方法
Jan 28 #Python
教你一分钟在win10终端成功安装Pytorch的方法步骤
Jan 28 #Python
详解win10下pytorch-gpu安装以及CUDA详细安装过程
Jan 28 #Python
Python中Pyspider爬虫框架的基本使用详解
Jan 27 #Python
Python3 + Appium + 安卓模拟器实现APP自动化测试并生成测试报告
Jan 27 #Python
You might like
多文件上载系统完整版
2006/10/09 PHP
木翼下载系统中说明的PHP安全配置方法
2007/06/16 PHP
Windows IIS PHP 5.2 安装与配置方法
2009/06/08 PHP
php笔记之常用文件操作
2010/10/12 PHP
解析使用substr截取UTF-8中文字符串出现乱码的问题
2013/06/20 PHP
微信接口生成带参数的二维码
2017/07/31 PHP
JS模拟面向对象全解(二、类型与赋值)
2011/07/13 Javascript
javascript验证只能输入数字和一个小数点示例
2013/10/21 Javascript
jQuery仿360导航页图标拖动排序效果代码分享
2015/08/24 Javascript
一款简单的jQuery图片标注效果附源码下载
2016/03/22 Javascript
Angular搜索 过滤 批量删除 添加 表单验证功能集锦(实例代码)
2017/10/25 Javascript
解决vue 路由变化页面数据不刷新的问题
2018/03/13 Javascript
Vue中的v-for循环key属性注意事项小结
2018/08/12 Javascript
js实现unicode码字符串与utf8字节数据互转详解
2019/03/21 Javascript
layui树形菜单动态遍历的例子
2019/09/23 Javascript
Node.js API详解之 net模块实例分析
2020/05/18 Javascript
vue props default Array或是Object的正确写法说明
2020/07/30 Javascript
PHP读取远程txt文档到数组并实现遍历
2020/08/25 Javascript
Python文本特征抽取与向量化算法学习
2017/12/22 Python
pyhton列表转换为数组的实例
2018/04/04 Python
python爬虫获取百度首页内容教学
2018/12/23 Python
详解Ubuntu16.04安装Python3.7及其pip3并切换为默认版本
2019/02/25 Python
Python实现计算对象的内存大小示例
2019/07/10 Python
python使用opencv实现马赛克效果示例
2019/09/28 Python
Python 继承,重写,super()调用父类方法操作示例
2019/09/29 Python
读取nii或nii.gz文件中的信息即输出图像操作
2020/07/01 Python
2021年值得向Python开发者推荐的VS Code扩展插件
2021/01/25 Python
对CSS3选择器的研究(详解)
2016/09/16 HTML / CSS
HTML5中的音频和视频媒体播放元素小结
2016/01/29 HTML / CSS
移动端HTML5实现文件上传功能【附代码】
2016/03/25 HTML / CSS
英国Radley包德国官网:Radley London德国
2019/11/18 全球购物
产品销售员岗位职责
2013/12/18 职场文书
贺卡寄语大全
2014/04/11 职场文书
新闻编辑求职信
2014/07/13 职场文书
公司试用期员工自我评价
2014/09/17 职场文书
供应商食品安全承诺书
2015/04/29 职场文书