Python tempfile模块:生成临时文件和临时目录
2023-06-13 09:19:41 时间
tempfile 模块专门用于创建临时文件和临时目录,它既可以在 UNIX 平台上运行良好,也可以在 Windows 平台上运行良好。
tempfile 模块中常用的函数,如表 1 所示。
tempfile 模块函数 | 功能描述 |
---|---|
tempfile.TemporaryFile(mode='w+b', buffering=None, encoding=None, newline=None, suffix=None, prefix=None, dir=None) | 创建临时文件。该函数返回一个类文件对象,也就是支持文件 I/O。 |
tempfile.NamedTemporaryFile(mode='w+b', buffering=None, encoding=None, newline=None, suffix=None, prefix=None, dir=None, delete=True) | 创建临时文件。该函数的功能与上一个函数的功能大致相同,只是它生成的临时文件在文件系统中有文件名。 |
tempfile.SpooledTemporaryFile(max_size=0, mode='w+b', buffering=None, encoding=None, newline=None, suffix=None, prefix=None, dir=None) | 创建临时文件。与 TemporaryFile 函数相比,当程序向该临时文件输出数据时,会先输出到内存中,直到超过 max_size 才会真正输出到物理磁盘中。 |
tempfile.TemporaryDirectory(suffix=None, prefix=None, dir=None) | 生成临时目录。 |
tempfile.gettempdir() | 获取系统的临时目录。 |
tempfile.gettempdirb() | 与 gettempdir() 相同,只是该函数返回字节串。 |
tempfile.gettempprefix() | 返回用于生成临时文件的前缀名。 |
tempfile.gettempprefixb() | 与 gettempprefix() 相同,只是该函数返回字节串。 |
提示:表中有些函数包含很多参数,但这些参数都具有自己的默认值,因此如果没有特殊要求,可以不对其传参。
tempfile 模块还提供了 tempfile.mkstemp() 和 tempfile.mkdtemp() 两个低级别的函数。上面介绍的 4 个用于创建临时文件和临时目录的函数都是高级别的函数,高级别的函数支持自动清理,而且可以与 with 语句一起使用,而这两个低级别的函数则不支持,因此一般推荐使用高级别的函数来创建临时文件和临时目录。
此外,tempfile 模块还提供了 tempfile.tempdir 属性,通过对该属性赋值可以改变系统的临时目录。
下面程序示范了如何使用临时文件和临时目录:
import tempfile # 创建临时文件 fp = tempfile.TemporaryFile() print(fp.name) fp.write('两情若是久长时,'.encode('utf-8')) fp.write('又岂在朝朝暮暮。'.encode('utf-8')) # 将文件指针移到开始处,准备读取文件 fp.seek(0) print(fp.read().decode('utf-8')) # 输出刚才写入的内容 # 关闭文件,该文件将会被自动删除 fp.close() # 通过with语句创建临时文件,with会自动关闭临时文件 with tempfile.TemporaryFile() as fp: # 写入内容 fp.write(b'I Love Python!') # 将文件指针移到开始处,准备读取文件 fp.seek(0) # 读取文件内容 print(fp.read()) # b'I Love Python!' # 通过with语句创建临时目录 with tempfile.TemporaryDirectory() as tmpdirname: print('创建临时目录', tmpdirname)
上面程序以两种方式来创建临时文件:
- 第一种方式是手动创建临时文件,读写临时文件后需要主动关闭它,当程序关闭该临时文件时,该文件会被自动删除。
- 第二种方式则是使用 with 语句创建临时文件,这样 with 语句会自动关闭临时文件。
上面程序最后还创建了临时目录。由于程序使用 with 语句来管理临时目录,因此程序也会自动删除该临时目录。
运行上面程序,可以看到如下输出结果:
C:/Users/admin/AppData/Local/Temp/tmphvehw9z1
两情若是久长时,又岂在朝朝暮暮。
b'I Love Python!'
创建临时目录C:/Users/admin/AppData/Local/Temp/tmp3sjbnwob
上面第一行输出结果就是程序生成的临时文件的文件名,最后一行输出结果就是程序生成的临时目录的目录名。需要注意的是,不要去找临时文件或临时文件夹,因为程序退出时该临时文件和临时文件夹都会被删除。
相关文章
- python秒起https 文件服务器
- python 生成数组_Python创建数组「建议收藏」
- pythonrequests代理ip_python使用requests模块使用ip代理池
- python 使用 with open() as 读写文件
- python语言的优点和缺点[通俗易懂]
- python 爬取图集谷妹子图片,按自己喜好抓取一页图片,有兴趣二次开发 抓全站
- 运维Python自动化之路:基础信息模块之IPy模块
- lambda表达式python_Python中的Lambda表达式「建议收藏」
- Python保存json_python保存json文件
- Python 生成随机数_python建立随机数列表
- Python 生成随机数_python 随机字符串
- Python编程经典案例【考题】自由落体运动球的运动轨迹
- 【编写环境一】遇到常见python函数处理方式
- 基于Python接口自动化测试框架+数据与代码分离实战(优化篇)
- 【使用Python实现算法】05 标准库(函数式编程模块)
- Python基础语法-基本数据类型-元组(二)
- python-协程并发-多个协程的调度(二)
- Python使用platform库获取系统信息:操作系统信息、硬件信息、python环境信息
- python图片小爬虫详解编程语言
- python通过MySQLdb模块连接查询mysql数据详解编程语言
- 50行Python代码实现代理服务器详解编程语言
- Python json模块dumps loads详解编程语言
- Python 使用Pillow模块生成验证码详解编程语言
- python-dict详解编程语言
- Python pydoc模块详解:查看、生成帮助文档
- 快速安装Python MySQL模块(python安装mysql模块)
- 只需5分钟就能Get到的神器:Python虚拟环境安装&使用
- python编程-将Python程序转化为可执行程序[整理]
- Python中列表(list)操作方法汇总