如何用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读写Redis数据库操作示例
Mar 18 Python
在Python的列表中利用remove()方法删除元素的教程
May 21 Python
Python MySQL数据库连接池组件pymysqlpool详解
Jul 07 Python
python编程实现随机生成多个椭圆实例代码
Jan 03 Python
Django框架使用内置方法实现登录功能详解
Jun 12 Python
解决Python3用PIL的ImageFont输出中文乱码的问题
Aug 22 Python
Python TCP通信客户端服务端代码实例
Nov 21 Python
pytorch梯度剪裁方式
Feb 04 Python
Python基于进程池实现多进程过程解析
Apr 30 Python
Python Json数据文件操作原理解析
May 09 Python
Python用dilb提取照片上人脸的示例
Oct 26 Python
Python爬虫基础初探selenium
May 31 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
解析php中的escape函数
2013/06/29 PHP
调试PHP程序的多种方法介绍
2014/11/06 PHP
PHP实现返回JSON和XML的类分享
2015/01/28 PHP
PHP输出图像imagegif、imagejpeg与imagepng函数用法分析
2016/11/14 PHP
基于Laravel 多个中间件的执行顺序详解
2019/10/21 PHP
自己动手开发jQuery插件教程
2011/08/25 Javascript
extjs中form与grid交互数据(record)的方法
2013/08/29 Javascript
js中split函数的使用方法说明
2013/12/26 Javascript
Javascript中浮点数相乘的一个解决方法
2014/06/03 Javascript
JS将滑动门改为选项卡(需鼠标点击)的实现方法
2015/09/27 Javascript
对象题目的一个坑 理解Javascript对象
2015/12/22 Javascript
js实现碰撞检测特效代码分享
2016/10/16 Javascript
EasyUI 结合JS导出Excel文件的实现方法
2016/11/10 Javascript
Vue关于数据绑定出错解决办法
2017/05/15 Javascript
详解原生js实现offset方法
2017/06/15 Javascript
基于angular-utils-ui-breadcrumbs使用心得(分享)
2017/11/03 Javascript
基于Vue框架vux组件库实现上拉刷新功能
2017/11/28 Javascript
10行原生JS实现文字无缝滚动(超简单)
2018/01/02 Javascript
Vue项目中使用better-scroll实现一个轮播图自动播放功能
2018/12/03 Javascript
微信小程序左右滚动公告栏效果代码实例
2019/09/16 Javascript
[05:49]2014DOTA2TI4正赛第二日综述 昔日冠军纷纷落马 VG LGD占尽先机
2014/07/20 DOTA
Python去除字符串两端空格的方法
2015/05/21 Python
浅谈python正则的常用方法 覆盖范围70%以上
2018/03/14 Python
Python代理IP爬虫的新手使用教程
2019/09/05 Python
Python 实现自动导入缺失的库
2019/10/29 Python
Python简易计算器制作方法代码详解
2019/10/31 Python
Python Tornado批量上传图片并显示功能
2020/03/26 Python
Django与pyecharts结合的实例代码
2020/05/13 Python
python中pdb模块实例用法
2021/01/15 Python
乌克兰在线电子产品商店:MTA
2019/11/14 全球购物
11月升旗仪式讲话稿
2014/02/15 职场文书
贸易跟单员英文求职信
2014/04/19 职场文书
促销活动总结范文
2014/04/30 职场文书
企业法律事务工作总结
2015/08/11 职场文书
2016年六一儿童节开幕词
2016/03/04 职场文书
分享一个vue实现的记事本功能案例
2022/04/11 Vue.js