同样,我们可以使用 `mkdtemp()` 方法创建一个安全的临时目录。

示例

输出

 
C:\Users\username\AppData\Local\Temp\secured__xnjhdez_javatpoint   

说明

Python代码片段使用 `tempfile` 模块的 `mkdtemp()` 方法,通过提供的“secured_”前缀和“_javatpoint”后缀,创建了一个安全的临时目录。该函数为系统上的临时目录(通常位于 `/tmp/`)指定了一个唯一的目录名。生成的 `C:\Users\username\AppData\Local\Temp\secured__xnjhdez_javatpoint` 目录路径说明了如何在Python程序中安全地创建一个可用于各种短期存储需求的临时目录。

临时文件位置

通过修改 `tempdir` 属性,我们可以指定文件存储的位置。`gettempdir()` 函数可以用来检索该位置。当我们创建临时文件或目录时,Python会按顺序查找一个列表中的目录,寻找一个调用用户可以创建文件的目录。

以下是按优先级排列的列表:

  • 环境变量 `TMPDIR` 指定的路径。
  • 环境变量 `TEMP` 指定的目录。
  • 环境变量 `TMP` 指定的路径。
  • 特定于平台的目录
    1. 在Windows上,按顺序是 `C:\TEMP`、`C:\TMP`、`\TEMP` 和 `\TMP` 文件夹。
    2. 在所有其他平台上,按顺序是 `/tmp`、`/var/tmp` 和 `/usr/tmp` 文件夹。
  • 当前正在使用的目录。

输出

 
C:\Users\username\AppData\Local\Temp   

说明

该代码使用 `tempfile.tempdir` 将临时目录路径设置为 `"C:\Users\username\AppData\Local\Temp"`,并使用 `tempfile.gettempdir()` 获取当前的临时目录路径。输出证实了将 `"C:\Users\username\AppData\Local\Temp"` 设置为临时目录位置的成功。但请注意,实际使用的临时目录可能会根据权限和系统设置而有所不同。


  

使用Python生成临时文件和目录

2025年1月4日 | 阅读7分钟

Python `tempfile` 模块简介

当我们处理大量数据或需要在程序运行时临时保存数据时,临时文件变得非常必要。Python的 `tempfile` 模块提供了创建这些临时文件并进行操作的功能。这些文件会在平台特定的默认目录中以唯一的名称生成和保存。一旦使用 `tempfile` 模块创建的文件被关闭,它们也会被删除。

在接下来的教程中,我们将学习如何使用 `tempfile` 模块在Python编程语言中创建临时文件和临时目录。

那么,让我们开始吧。

创建临时文件

`tempfile` 模块的 `TemporaryFile()` 类用于创建临时文件。默认情况下,此临时文件以 `w+b` 模式打开,允许我们对其进行读写。使用二进制模式是为了能够处理任何类型的数据。此文件在文件系统中可能没有有效的名称。

示例

输出

 
<tempfile._TemporaryFileWrapper object at 0x0000010D91754C10>
C:\Users\username\AppData\Local\Temp\tmpfvlnfqov   

说明

上面的Python示例演示了使用 `tempfile` 模块构造临时文件对象的方法。`tempfile.TemporaryFile()` 类返回一个文件对象,该对象也生成一个临时文件。在此示例中,显示时,`` 表示创建了一个具有唯一标识“ `C:\Users\username\AppData\Local\Temp\tmpfvlnfqov` ”的临时文件对象。可以使用 `temp.name` 属性检索临时文件名,在本例中为“ `C:\Users\username\AppData\Local\Temp\tmpfvlnfqov` ”。临时文件在关闭或程序结束时会自动删除,非常适合临时数据存储,无需手动清理。

该函数返回一个类文件对象,可用作临时存储空间。可以使用 `name` 属性获取文件的随机唯一名称。

注意:此文件没有文件系统引用,也不是真实可见的文件名。

创建临时命名文件

与 `TemporaryFile()` 类类似,`tempfile` 模块的 `NamedTemporaryFile()` 类也用于创建临时文件;但是,此类在文件系统中为其提供了一个可见的名称。为了防止在关闭时删除临时文件,我们需要将 `delete` 选项设置为 `False`。

示例

输出

 
<tempfile._TemporaryFileWrapper object at 0x000002003CE74C40>
C:\Users\username\AppData\Local\Temp\tmpo954nr1v   

说明

此Python代码示例演示了使用 `tempfile` 模块构造一个命名临时文件对象。`tempfile.NamedTemporaryFile()` 类返回一个文件对象,该对象也生成一个具有唯一名称的临时文件。打印的 `` 显示已创建临时文件对象,并且临时文件的名称为 `C:\Users\username\AppData\Local\Temp\tmpo954nr1v`。命名临时文件在关闭或程序结束时会被立即删除。它们提供了一种方便的方法来处理具有位置或名称要求的临时文件,而无需手动清理。

唯一的区别是,这次文件有一个可见的名称,而不仅仅是返回与之前相同的类文件对象。

为临时文件添加前缀和后缀

通过提供“suffix”和“prefix”选项,我们可以选择为定义的临时文件名称追加后缀或前缀。

输出

 
<tempfile._TemporaryFileWrapper object at 0x0000023CF5EB4D00>
C:\Users\username\AppData\Local\Temp\tempo_3rp4ezxg_javatpoint   

说明

此Python代码使用 `tempfile` 模块创建了一个带有自定义前缀和后缀的命名临时文件。前缀和后缀是传递给 `NamedTemporaryFile()` 类的可选参数,允许用户为生成的临时文件名添加前缀和后缀。本例通过提供前缀“ `tempo_` ”和后缀“ `_javatpoint` ”创建了一个名为“ `C:\Users\username\AppData\Local\Temp\tempo_3rp4ezxg_javatpoint` ”的临时文件。这使得您可以自由地创建具有独特命名约定的临时文件,以满足程序的需要。

读写临时文件

要写入临时文件,请使用 `write()` 函数。默认情况下,它接受二进制数据作为输入。为了将文本转换为二进制数据,我们可以将其作为输入并加上“ `b` ”前缀。

`write` 函数返回写入的字符数。相反,如果我们以文本模式( `w+t` )打开文件,可以使用 `writelines()` 函数,它接受一个字符串参数。写入后,指针位于文件末尾。因此,在使用 `seek()` 函数将文件指针放置在文件开头之前,我们无法读取其内容。

`seek()` 接受一个参数,即我们希望将其定位在之前的字符索引。

示例

输出

 
b'Hello. Greetings from Javatpoint! Lets Learn Python'   

说明

此Python代码展示了如何使用 `tempfile` 模块创建一个名为 `tmpFile` 的临时文件。使用 `write()` 函数将字节 `" Hello. Greetings from Javatpoint! Lets Learn Python"` 写入文件后,使用 `seek(0)` 将文件指针重置到文件开头。然后,使用 `read()` 函数读取文件内容,生成输出 `" Hello. Greetings from Javatpoint! Lets Learn Python"`。最后,使用 `close()` 关闭临时文件并释放所有相关的系统资源。

创建临时目录

为了存储我们的临时文件,我们可以像创建文件一样创建一个临时目录。该目录是使用 `TemporaryDirectory()` 类创建的。一旦我们完成了对临时文件的处理,我们就必须手动使用 `os.removedirs()` 删除该目录。

示例

输出

 
<TemporaryDirectory 'C:\\Users\\username\\AppData\\Local\\Temp\\tmpfkl14tjd'>   

说明

此Python代码片段演示了 `tempfile` 模块的使用,用于创建一个名为 `tmpDirectory` 的临时目录。`TemporaryDirectory()` 类会在系统上创建一个临时目录,并返回一个代表该目录的 `TemporaryDirectory` 对象。在此示例中,临时目录的路径是 ``。此类临时目录对于在程序执行期间存储临时文件或数据非常有用,并且它们会在程序退出时自动清理,无需手动清理。

安全的临时文件和目录

使用 `mkstemp()`,我们可以安全地创建临时文件。使用此方法,只有创建文件的人才能读取和写入它。与 `NamedTemporaryFile()` 一样,可以添加前缀和后缀参数。通过将 `text` 选项更改为 `True`,我们可以以文本模式打开它,而不是默认的二进制模式。关闭此文件时,不会对其进行任何操作。

示例

输出

 
(3, 'C:\\Users\\username\\AppData\\Local\\Temp\\secured_gzlcj9t3_javatpoint')   

说明

这段Python代码使用 `tempfile` 模块的 `mkstemp()` 方法创建了一个安全的临时文件。该函数在临时目录中创建一个唯一的临时文件名,并使用给定的前缀“ `secured_` ”和后缀“ `_javatpoint` ”。它会生成一个元组,其中包含临时文件的绝对路径(`'C:\\Users\\username\\AppData\\Local\\Temp\\secured_gzlcj9t3_javatpoint'`)和操作系统级别的文件描述符(在此情况下为3)。此方法保证了临时文件的安全生成,使其适用于安全至关重要的情况。