如何用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将xml xsl文件生成html文件存储示例讲解
Dec 03 Python
Python常用列表数据结构小结
Aug 06 Python
Python中不同进制互相转换(二进制、八进制、十进制和十六进制)
Apr 05 Python
Python网络编程详解
Oct 31 Python
Python逐行读取文件中内容的简单方法
Feb 26 Python
详解python实现交叉验证法与留出法
Jul 11 Python
解决python web项目意外关闭,但占用端口的问题
Dec 17 Python
Python发送手机动态验证码代码实例
Feb 28 Python
Python实现检测文件的MD5值来查找重复文件案例
Mar 12 Python
Python smtp邮件发送模块用法教程
Jun 15 Python
关于探究python中sys.argv时遇到的问题详解
Feb 23 Python
python中的被动信息搜集
Apr 29 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实现利用MySQL保存session的方法
2014/08/23 PHP
php使用date和strtotime函数输出指定日期的方法
2014/11/14 PHP
php经典趣味算法实例代码
2020/01/21 PHP
jQuery 1.0.2
2006/10/11 Javascript
JS获取IUSR_机器名和IWAM_机器名帐号的密码
2006/12/06 Javascript
js带按钮的提示框可供选择示例代码
2013/09/17 Javascript
jQuery插件之Tocify动态节点目录菜单生成器附源码下载
2016/01/08 Javascript
微信小程序 canvas API详解及实例代码
2016/10/08 Javascript
AngularJS1.X学习笔记2-数据绑定详解
2017/04/01 Javascript
Cookies 和 Session的详解及区别
2017/04/21 Javascript
分享Bootstrap简单表格、表单、登录页面
2017/08/04 Javascript
vue实现密码显示隐藏切换功能
2018/02/23 Javascript
关于layui表单中按钮自动提交的解决方法
2019/09/09 Javascript
使用p5.js临摹动态图形
2019/10/23 Javascript
Python写的Tkinter程序屏幕居中方法
2015/03/10 Python
Python中使用gzip模块压缩文件的简单教程
2015/04/08 Python
对Python的Django框架中的项目进行单元测试的方法
2016/04/11 Python
python爬虫爬取某站上海租房图片
2018/02/04 Python
详解django三种文件下载方式
2018/04/06 Python
Django项目中用JS实现加载子页面并传值的方法
2018/05/28 Python
python实现Virginia无密钥解密
2019/03/20 Python
Django 全局的static和templates的使用详解
2019/07/19 Python
Django框架 查询Extra功能实现解析
2019/09/04 Python
matplotlib制作雷达图报错ValueError的实现
2021/01/05 Python
css3 实现元素弧线运动的示例代码
2020/04/24 HTML / CSS
CSS3+HTML5+JS 实现一个块的收缩与展开动画效果
2020/11/17 HTML / CSS
一套软件开发工程师笔试题
2015/05/18 面试题
Java里面Pass by value和Pass by Reference是什么意思
2016/05/02 面试题
大学军训感言1000字
2014/02/25 职场文书
拒绝黄毒毒宣传标语
2014/06/26 职场文书
2014年机关作风建设工作总结
2014/10/23 职场文书
2014年人事部工作总结
2014/12/03 职场文书
酒会开场白大全
2015/06/01 职场文书
2016全国“质量月”活动标语口号
2015/12/26 职场文书
Django操作cookie的实现
2021/05/26 Python
详解MongoDB排序时内存大小限制与创建索引的注意事项
2022/05/06 MongoDB