源代码: Lib/tempfile.py
![628b617050c0bd6ad82a154656d9f94f.png](https://i-blog.csdnimg.cn/blog_migrate/030426a7294fa2ae662b9772af04870b.jpeg)
该模块用于创建临时文件和目录,它可以跨平台使用。TemporaryFile、NamedTemporaryFile、TemporaryDirectory 和 SpooledTemporaryFile 是带有自动清理功能的高级接口,可用作上下文管理器。mkstemp() 和 mkdtemp() 是低级函数,使用完毕需手动清理。
所有由用户调用的函数和构造函数都带有参数,这些参数可以设置临时文件和临时目录的路径和名称。该模块生成的文件名包括一串随机字符,在公共的临时目录中,这些字符可以让创建文件更加安全。为了保持向后兼容性,参数的顺序有些奇怪。所以为了代码清晰,建议使用关键字参数。
这个模块定义了以下内容供用户调用:
- tempfile.TemporaryFile(mode='w+b', buffering=None, encoding=None, newline=None, suffix=None, prefix=None, dir=None)
返回一个 file-like object 作为临时存储区域。创建该文件使用了与 mkstemp() 相同的安全规则。它将在关闭后立即销毁(包括垃圾回收机制关闭该对象时)。在 Unix 下,该文件在目录中的条目根本不创建,或者创建文件后立即就被删除了,其他平台不支持此功能。您的代码不应依赖使用此功能创建的临时文件名称,因为它在文件系统中的名称可能是可见的,也可能是不可见的。
生成的对象可以用作上下文管理器(参见 例子)。完成文件对象的上下文或销毁后,临时文件将从文件系统中删除。
mode 参数默认值为 'w+b' 因此创建的文件可以读取或写入而不用关闭。 因为是使用二进制模式,所以它在所有平台上的行为都保持一致而不用关心所存储的是什么数据。 buffering, encoding 和 newline 的解读方式与 open() 相同。
参数 dir、prefix 和 suffix 的含义和默认值都与它们在 mkstemp() 中的相同。
在 POSIX 平台上,它返回的对象是真实的文件对象。在其他平台上,它是一个文件类对象 (file-like object),它的 file 属性是底层的真实文件对象。
如果可用,则使用 os.O_TMPFILE 标志(仅限于 Linux,需要 3.11 及更高版本的内核)。
在 3.5 版更改: 如果可用,现在用的是 os.O_TMPFILE 标志。
- tempfile.NamedTemporaryFile(mode='w+b', buffering=None, encoding=N