python内置库--tmpfile

简单介绍

tmpfile可以生成临时文件和目录,在生成后,其中一些函数还有自动清理那些生成的文件或目录的功能

相关函数

tempfile.TemporaryFile()

tempfile.TemporaryFile(mode='w+b', buffering=- 1, encoding=None, newline=None, suffix=None, prefix=None, dir=None, *, errors=None)

返回一个 file-like object (文件类对象)作为临时存储区域。

它将在文件对象关闭后立即销毁(包括垃圾回收机制关闭该对象时)。

在 Unix 下,the directory entry for the file根本不创建,或者创建文件后立即就被删除了,其他平台不支持此功能。

不同于后面的NamedTemporaryFile,在函数TemporaryFile里面,不推荐获取返回对象的name属性(即文件名称),因为它在文件系统中的名称可能是可见的,也可能是不可见的,

该函数可以用在with语句中。

NamedTemporaryFile()和TemporaryFile()返回值都是file-like object,所以可以使用文件对象的方法如write() read() seek(),注意,由于参数mode=w+b, 所以write()的参数应该是byte类型

image
执行
image
根据生成文件的位置,我们在电脑中是找不到该文件的,上面说了,文件会被自动清理

tempfile.NamedTemporaryFile()

tempfile.NamedTemporaryFile(mode='w+b', buffering=- 1, encoding=None, newline=None, suffix=None, prefix=None, dir=None, delete=True, *, errors=None)

此函数执行的操作与 TemporaryFile() 完全相同,但是文件名(绝对路径)可从返回的文件类对象的 name 属性获取. 该函数可以用在with语句中

在该函数未被关闭的情况下,文件名能否再次被用来打开文件要视平台而定,在 Unix 上可以这样做;在 Windows 上不可以

函数返回值同样可以使用write()等文件对象的方法

buffering 是缓冲设置

suffix prefix是后缀和前缀设置

dir :指定生成临时文件的位置 不设置的话会默认值是None,会在一些特定目录里生产,在win上会生成在c盘用户目录里面的tmp下面

delete 为(默认的)真值,则文件会在关闭之后立即被删除

image

执行
image
如上,在函数返回的文件类对象未关闭之前,不能用read()方法读取刚write()的数据,用seek很麻烦

现在,把文件类对象关闭后再在open()函数里面读取
image

image
如上,现在会找不到生成的文件。 和之前TemporaryFile一样,该函数会在文件对象关闭后立即删除文件
不同的是,我们可以用delete参数来控制是否立即删除
image

image
现在,我们可以在电脑文件夹找到临时生成的目录,不过,这好像失去了临时生成的意义,需要我们手动清理了

class tempfile.TemporaryDirectory()

tempfile.TemporaryDirectory(suffix=None, prefix=None, dir=None, ignore_cleanup_errors=False)

同TemporaryFile(),不同的是创建的是目录

此目录可通过调用 cleanup() 方法来显式地清理。 如果 ignore_cleanup_errors 为真值,则在显式或隐式清理(例如在 Windows 上 PermissionError 移除打开的文件)期间出现的未处理异常将被忽略,并且剩余的可移除条目会被“尽可能”地删除。 在其他情况下,错误将在任何上下文清理发生时被引发 (cleanup() 调用、退出上下文管理器、对象被作为垃圾回收或解释器关闭等)。

tempfile.mkstemp(suffix=None, prefix=None, dir=None, text=False)

与 TemporaryFile() NamedTemporaryFile()不同,mkstemp() 用户用完临时文件后需要自行将其删除。也就说可以在文件中找到所需要的文件
返回值是一个元组,其中第一个元素是像os.open()返回值及文件描述符的一个东西,第二个元素是该文件的绝对路径
image

执行
image
再电脑中是可以找到该文件的
注意,这里就不可以用它的返回值去使用write() seek()等文件对象的方法了, 这也是和NamedTemporaryFile()不同的地方

tempfile.mkdtemp(suffix=None, prefix=None, dir=None)

同tempfile.mkstemp,只不过创建的是目录

tempfile.gettempdir()

返回放置临时文件的目录的名称。这个方法的返回值就是本模块所有函数的 dir 参数的默认值。

Python 搜索标准目录列表,以找到调用者可以在其中创建文件的目录。这个列表是:

TMPDIR 环境变量指向的目录。

TEMP 环境变量指向的目录。

TMP 环境变量指向的目录。

与不同平台上相关的位置:

在 Windows 上,依次为 C:\TEMP、C:\TMP、\TEMP 和 \TMP。

在所有其他平台上,依次为 /tmp、/var/tmp 和 /usr/tmp。

不得已时,使用当前工作目录。

posted @ 2023-05-22 23:41  工作手记  阅读(352)  评论(0编辑  收藏  举报