首页 > 编程语言 >使用python的tempfile模块创建临时文件

使用python的tempfile模块创建临时文件

时间:2023-01-30 17:42:14浏览次数:47  
标签:文件 python 创建 tempfile 文件夹 模块 临时文件


什么样的情况下需要我创建临时文件呢?我很早就知道tempfile这个模块,但一直没有使用过它,也没有兴趣去研究它,一度认为自己用不到这个模块。存在即合理,合理的才能存在,想来是我不够虚心,才没有看到这个模块的应用价值。

1. 临时文件目录

在linux系统下有一个/tmp 目录,这个目录下存储的都是些临时文件,创建这些临时文件的可能是操作系统,也可能是你安装的某个软件系统,比如hadoop,你自己写的程序也可以对这里的文件进行读写操作。

临时文件目录下的文件夹和文件,会被定期清理,默认是30天。这就要求/tmp目录下存储的文件,必须都是可删除的文件,删除后不能对系统或软件的运行产生影响。

windows系统下也有类似的文件夹,在我的电脑上,这个目录是C:\Users\zhangdongsheng\AppData\Local\Temp 。

2. tempfile

使用tempfile模块,可以创建临时文件和临时文件夹,主要应用它的两个函数,mkstemp 和 mkdtemp

from tempfile import mkstemp, mkdtemp

path = mkdtemp() # 创建临时文件夹
print(path)

_, filepath = mkstemp() # 创建临时文件
print(filepath)

什么样的场景下需要使用临时文件呢?我归纳总结为一条:程序运行后,你再也不会使用这些文件时,就可以创建为临时文件。

程序一旦结束,运行期间所创建的文件便失去应用价值,那么这样的文件就可以创建为临时文件。所谓临时文件,本质上就是在/tmp 目录下创建的文件,会定期清理。

由于这些文件在程序结束后不会再被使用,那么我们也就不必关心它在哪里创建,不必担心它因为长期积累而占用磁盘空间,我们甚至不用考虑为它起一个名字,tempfile模块会为临时文件取一个随机的名称。

这些文件存在于程序运行期间,tempfile模块简化了我们对这些文件的管理,mkdtemp和mkstemp会返回文件夹和文件的路径,这可以确保我们能够对文件夹和文件进行操作但又不必去管理他们,这些管理包括新建,删除等操作。

3. tempfile 使用技巧

尽管我们创建的是临时文件,但在特定情况下,依然需要我们做一些简单的管理,比如设置文件的前缀和后缀

def mkstemp(suffix=None, prefix=None, dir=None, text=False):
pass

通过设置suffix 和 prefix 参数,可以决定文件名称的后缀和前缀,如果在调试程序期间你需要查看临时文件,这些前缀和后缀可以提供一些帮助。

dir参数,决定临时文件在哪个文件夹下被创建,默认是在/tmp目录下创建,你可以设置为自己管理的文件夹。

4. 总结

在程序运行期间产生的中间文件既不能作为程序的输出成果来展示,也没有后续的应用价值,创建为临时文件,则不必去管理他们。


标签:文件,python,创建,tempfile,文件夹,模块,临时文件
From: https://blog.51cto.com/u_15948370/6027492

相关文章

  • python判断一个进程是否存在的3种方法
    在python中,如何判断一个进程是否存在呢?可以使用Popen执行shell命令判断进程是否存在,或者检查/proc目录下是否存在进程相对应的目录,最佳的方法是向进程发送信号0,下面分别介......
  • python读取csv文件的正确方式
    准备数据name,age小明,14小刚,15通常,我们用下面的代码读取csvimportcsvwithopen(r'C:\Users\zhangdongsheng\Desktop\data.csv',encoding='utf-8')asf:reader=csv......
  • 一文看懂python的迭代器和可迭代对象
    阅读完本文,你将收获以下知识点:什么是迭代器和可迭代对象,他们之间有什么关系迭代器可以迭代的底层原理是什么如何自定义可迭代对象和迭代器迭代器和可迭代对象是两个非常难以......
  • 从python列表里删除一个元素会对reversed() 产生怎样的影响
    这是一个在stackoverflow上看到的问题,非常的有趣且值得研究。1.iter使用iter函数返回列表的迭代器,随后从列表里删除一个元素,在遍历迭代器时,输出的内容会是怎样的呢?lst=['......
  • 用python实现一个自动保存复制图片的功能
    由于经常写作,需要为文章准备一些配图,通常这些配图是从百度图片搜索里准备的。在准备图片时,我遇到了两个小麻烦:有些图片的格式是webp,需要在另存为时指定格式有些图片需要剪切......
  • zodb,一个python对象数据库
    1.什么是对象数据库关系型数据库,是指采用了关系模型来组织数据的数据库,以行和列的形式存储数据库,典型如mysql。NoSQL数据库,是指非关系型数据库,典型如mongodb。对象数据库,是......
  • python怎么做类型标注
    文章目录​​1.为变量做类型标注​​​​1.1简单的数据类型​​​​1.2使用Optional​​​​1.3使用Union​​​​1.4为容器类型做标注​​​​1.4.1为集合做标注​......
  • c++多线程调用python
    脚本语言是快速编写富有弹性的代码的重要方法之一,在 Unix 系统自动化管理中已经应用了多种脚本语言。现在,在许多应用开发中,也提供了脚本层,这大大方便用户实现通用任务自......
  • 在python代码中,写其他编程语言的hello world
    1.helloworld不论哪种编程语言,在你最开始学习时,都会给你一个在终端输出helloworld的示例print("helloworld")这已经成为一种惯例,最近在github上闲逛时,偶遇了一个特别有......
  • python 系统更新跟踪
    #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#需求:#动态捕获指定服务器最新发布接种应用系统路......