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


标准库中的 **tempfile** 模块定义了用于创建临时文件和目录的函数。它们在由操作系统文件系统定义的特殊临时目录中创建。例如,在 Windows 下,临时文件夹位于 profile/AppData/Local/Temp 中,而在 Linux 中,临时文件保存在 /tmp 目录中。

以下函数在 tempfile 模块中定义

TemporaryFile()

此函数在临时目录中创建一个临时文件,并返回一个文件对象,类似于内置的 open() 函数。默认情况下,该文件以 wb+ 模式打开,这意味着它可以同时用于读取/写入其中的二进制数据。重要的是,文件对象关闭后,临时文件夹中的文件条目将被删除。以下代码显示了 TemporaryFile() 函数的使用。

>>> import tempfile
>>> f = tempfile.TemporaryFile()
>>> f.write(b'Welcome to TutorialsPoint')
>>> import os
>>> f.seek(os.SEEK_SET)
>>> f.read()
b'Welcome to TutorialsPoint'
>>> f.close()

以下示例以 w+ 模式打开 TemporaryFile 对象以写入然后读取文本数据而不是二进制数据。

>>> ff = tempfile.TemporaryFile(mode = 'w+')
>>> ff.write('hello world')
>>> ff.seek(0)
>>> ff.read()
'hello world'
>>> ff.close()

NamedTemporaryFile()

此函数类似于 TemporaryFile() 函数。唯一的区别在于,具有随机文件名的文件在操作系统的指定临时文件夹中可见。名称可以通过文件对象的 name 属性检索。此文件在关闭后也会立即删除。

>>> fo = tempfile.NamedTemporaryFile()
>>> fo.name
'C:\Users\acer\AppData\Local\Temp\tmpipreok8q'
>>> fo.close()

TemporaryDirectory()

此函数创建一个临时目录。您可以通过提及 dir 参数来选择此临时目录的位置。以下语句将在 C:\python36 文件夹中创建一个临时目录。

>>> f = tempfile.TemporaryDirectory(dir = "C:/python36")
<TemporaryDirectory 'C:/python36\ tmp9wrjtxc_'>

创建的目录出现在 dir1 文件夹中。通过在目录对象上调用 cleanup() 函数将其删除。

>>> f.name
'C:/python36\tmp9wrjtxc_'
>>> f.cleanup()

mkstemp()

此函数还创建了一个临时文件,类似于 TemporaryFile() 函数。此外,suffix 和 prefix 参数可用于添加到创建的临时文件中。与 TemporaryFile() 不同,创建的文件不会自动删除。它应该手动删除。

>>> f = tempfile.mkstemp(suffix = '.tp')
C:\Users\acer\AppData\Local\Temp\tmpbljk6ku8.tp

mkdtemp()

此函数还在操作系统的临时文件夹中创建一个临时目录,并返回其绝对路径名。要显式定义其创建位置,请使用 dir 参数。此文件夹也不会自动删除。

>>> tempfile.mkdtemp(dir = "c:/python36")
'c:/python36\tmpruxmm66u'

gettempdir()

此函数返回存储临时文件的目录名称。此名称通常从 tempdir 环境变量中获取。在 Windows 平台上,它通常是 user/AppData/Local/Temp 或 windowsdir/temp 或 systemdrive/temp。在 Linux 上,它通常是 /tmp。此目录用作 dir 参数的默认值。

>>> tempfile.gettempdir()
'C:\Users\acer\AppData\Local\Temp'

在本文中,解释了 tempfile 模块中的函数。

更新于: 2020-06-25

15K+ 浏览量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告