如何用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使用django获取用户IP地址的方法
May 11 Python
在Python的Django框架中使用通用视图的方法
Jul 21 Python
浅析Python中的getattr(),setattr(),delattr(),hasattr()
Jun 14 Python
一些常用的Python爬虫技巧汇总
Sep 28 Python
python中的变量如何开辟内存
Jun 26 Python
python3的数据类型及数据类型转换实例详解
Aug 20 Python
Python列表list常用内建函数实例小结
Oct 22 Python
python爬虫爬取淘宝商品比价(附淘宝反爬虫机制解决小办法)
Dec 03 Python
python里glob模块知识点总结
Jan 05 Python
pycharm 多行批量缩进和反向缩进快捷键介绍
Jan 15 Python
python抢购软件/插件/脚本附完整源码
Mar 04 Python
python中sys模块的介绍与实例
Apr 17 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之第六天
2006/10/09 PHP
用Zend Encode编写开发PHP程序
2006/10/09 PHP
php绘制一条弧线的方法
2015/01/24 PHP
最新制作ThinkPHP3.2.3完全开发手册
2015/11/23 PHP
PHP扩展Memcache分布式部署方案
2015/12/06 PHP
PHP 在数组中搜索给定的简单实例 array_search 函数
2016/06/13 PHP
详解json在php中的应用
2018/09/30 PHP
Laravel框架实现简单的学生信息管理平台案例
2019/05/07 PHP
php 根据URL下载远程图片、压缩包、pdf等文件到本地
2019/07/26 PHP
类之Prototype.js学习
2007/06/13 Javascript
jquery dialog键盘事件代码
2010/08/01 Javascript
javascript 三种方法实现获得和设置以及移除元素属性
2013/03/20 Javascript
裁剪字符串trim()自定义改进版
2013/04/10 Javascript
javaScript 动态访问JSon元素示例代码
2013/08/30 Javascript
使用js判断TextBox控件值改变然后出发事件
2014/03/07 Javascript
JavaScript更改原始对象valueOf的方法
2015/03/19 Javascript
基于Jquery和html5的7款个性化地图插件
2015/11/17 Javascript
vue.js事件处理器是什么
2017/03/20 Javascript
详解vue-cil和webpack中本地静态图片的路径问题解决方案
2017/09/27 Javascript
Angular 开发学习之Angular CLI的安装使用
2017/12/31 Javascript
解决vue脚手架项目打包后路由视图不显示的问题
2018/09/20 Javascript
jQuery实现的五星点评功能【案例】
2019/02/18 jQuery
layui table单元格事件修改值的方法
2019/09/24 Javascript
解决vue使用vant轮播组件swipe + flex时文字抖动问题
2021/01/07 Vue.js
python 中的[:-1]和[::-1]的具体使用
2020/02/13 Python
什么是python类属性
2020/06/10 Python
如何将Pycharm中调整字体大小的方式设置为"ctrl+鼠标滚轮上下滑"
2020/11/17 Python
GafasWorld哥伦比亚:网上购买眼镜
2017/11/28 全球购物
ParcelABC西班牙:包裹运送和快递服务
2019/12/24 全球购物
出纳岗位职责
2013/11/09 职场文书
元宵节晚会主持人串词
2014/03/25 职场文书
幼儿园小班评语
2014/04/18 职场文书
2014村党支部书记党建工作汇报材料
2014/11/02 职场文书
2016寒假假期总结
2015/10/10 职场文书
python urllib库的使用详解
2021/04/13 Python
Golang 对es的操作实例
2022/04/20 Golang