为了账号安全,请及时绑定邮箱和手机立即绑定

Python tempfile模块

标签:
Python

生活小场景思考🤔

我们在日常使用应用程序时,会在电脑上看到生成一些看不懂文件,那是为啥呀?

原因竟然是这🤪

  • 当应用程序APP运行时,要保存一些临时的信息;

  • 临时信息特点:不重要但是又不能没有。

  • 临时信息用于:保持日志、临时数据、无关紧要的设置、浏览数据副本等

  • 临时信息存储位置:windows下临时文件一般保存在C:/Documents and Settings/User/Local Settings/Temp

因此,Python提供啦一个tempfile模块,用于对临时信息进行操作。

废话不多说,我们本期来学习tempfile模块,let's go~~🧑‍✈️

1. tempfile模块概述

⭐tempfile模块用于创建临时文件和目录,支持Windows和Linux系统使用

  • 使用场景:tmpfile模块支持应用程序不需要与其他程序共享临时数据的创建

  • 提供4个高级类(自动清除关闭的文件):TemporaryFile类、NameTemporaryFile类、TemporaryDirectory类和SpooledTemporaryFile类

    (1)TemporaryFile类:用于最多的调用临时文件提供的标准接口,可用于读写临时文件,并且保证临时文件的隐藏性,默认的文件打开模式是w+b

    (2) NamedTemporaryFile类:与Temporaryfile类操作类似,但是对于文件关闭后是否删除delete进行判断,默认是True。

    (3) TemporaryDirectory类:会安全地创建一个临时目录。返回的对象可用于上下文管理器使用。

    (4) SpooledTemporaryFile类:与Temporaryfile类操作类似,在它基础上增加一个限制写入文件初始的闸值Max_size。当数据没有达到max_size时,会暂存在内存中;只有当数据超过max_size设置的值之后,会把数据写入在文件里保存。默认Max_size为0.

  • 也提供需要手动清理函数:mkstemp()mkdtemp() 方法

⚠️注意:

  1. tempfile模块提供参数可以设置临时文件和临时目录路径和名称

  2. tempfile模块创建的文件名包括一串随机字符能保证在公共临时目录下会更加安全。

  3. tempfile.mktemp()此方法在python2.3已经移除了,由mkstemp()来替代

2. tempfile模块相关方法

tempfile模块提供了创建临时文件的方法如下:

https://img1.sycdn.imooc.com//61114ba5000197e608100603.jpg

https://img1.sycdn.imooc.com//61114bb900014b8b08150164.jpg

📣 敲黑板:

  1. tempfile提供4个高级方法(上述表格标新)可以与上下文管理器with一起使用

  2. tempfile.mkstemp()默认是以二进制模式打开

  3. tempfile.mktemp()创建的目录只能由创建者读取、写入和检索

3. 小试牛刀

🔍TemporaryFile类的构造方法,其返回的还是一个文件对象。两个显著特点如下:

  1. 对应的文件没有文件名,对除了本程序之外的程序不可见

  2. 在被关闭的同时被删除(自动删除创建的文件)

🆚对比使用open()来创建文档后,使用完成需要调用os.remove(file)来删除文件

import tempfile


temp = tempfile.TemporaryFile()

# 打印创建的临时文件对象

print(temp)

# 打印临时文件所处的路径(绝对路径)

print(temp.name)


# 向临时文件中写入内容

temp.write(b'hello\nJuejin')


# 从头读取,和一般文件对象不同,seek方法的执行不能少

temp.seek(0)    

print(temp.read())


temp.close()    # 关闭文件的同时系统会自动删除文件


https://img1.sycdn.imooc.com//61114bdc0001ef6406350147.jpg

PS:temporaryfile写入数据默认是二进制模式,所以在写入数据时要转换成对应的格式,否则系统会抛出异常。

总结

本期,我们学习了创建临时文件操作的tempfile模块。在此模块下,提供了4个高级的功能分别是TemporaryFile、NameTemporaryFile、TemporaryDirectory和SpooledTemporaryFile能与上下文件管理器with一起使用,并且使用完成后系统会自动进行删除,释放系统空间。

以上是本期内容,欢迎大佬们评论点赞指正,我们下次见~🌹🌹🌹🌹🌹🌹


作者:盆友圈的小可爱
链接:https://juejin.cn/post/6993144497148264484
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消