使用 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 模块中的函数。