Python中的tempfile模块–创建临时文件和目录

时间:2020-01-09 10:44:20  来源:igfitidea点击:

在本教程中,我们将介绍如何在Python中创建临时文件和目录。我们可能需要一个临时文件来在应用程序运行时临时存储一些数据,可以在完成任务后安全地自动删除这些数据。

Python中的tempfile模块

在Python中,tempfile模块具有创建临时文件和目录的功能。它适用于所有受支持的平台。

tempfile模块中包含以下用于创建临时文件的功能。

  1. tempfile.TemporaryFile()–此函数返回一个可用作临时存储区的对象。默认情况下,文件以w + b模式打开,因此可以在不关闭文件的情况下读写创建的文件。使用二进制模式,以便它在所有平台上均具有一致的行为。临时文件在关闭后即被销毁。这是一个创建临时文件并向其中写入内容的Python示例。
def create_temp_file():
    fp = tempfile.TemporaryFile()
    fp.write(b'Writing content in temp file')
    print('Temp file full name:', fp.name)
    fp.seek(0)
    # read temp file
    s = fp.read()
    print(s)
    fp.close()

输出:

Temp file full name: C:\Users\theitroad\AppData\Local\Temp\tmpigwrmggh
b'Writing content in temp file'
  1. tempfile.NamedTemporaryFile –此函数的操作与TemporaryFile()完全相同,只是保证文件在文件系统中具有可见的名称。

  2. tempfile.mkstemp –以最安全的方式创建一个临时文件。使用此功能,用户有责任在完成后删除临时文件。 mkstemp()返回一个元组,其中包含打开文件的操作系统级句柄和该文件的绝对路径名(按此顺序)。

def create_temp_file():
    fp = tempfile.mkstemp()
    print('Handle:', fp[0])
    print('File Path:'. fp[1])
    try:
        with os.fdopen(fp[0], 'w+') as tmp:
            tmp.write('Writing content in temp file')
            tmp.seek(0)
            # read temp file
            s = tmp.read()
            print(s)
    finally:
        os.remove(fp[1])

输出:

C:\Users\Anshu\AppData\Local\Temp\tmp8yajie7g
Writing content in temp file

tempfile模块中用于创建临时目录的功能。

  1. tempfile.TemporaryDirectory –此函数安全地创建一个临时目录。如果未传递任何参数,则在默认位置创建目录,我们也可以使用dir参数传递目录位置。

在上下文完成或者临时目录对象被破坏后,新创建的临时目录及其所有内容将从文件系统中删除。可以通过调用cleanup()方法显式清除目录。

def create_temp_dir():
    fp = tempfile.TemporaryDirectory()
    print('created temporary directory', fp.name)
    fp.cleanup()

create_temp_dir()

输出:

created temporary directory C:\Users\Anshu\AppData\Local\Temp\tmp44habknw

使用dir参数传递目录时

def create_temp_dir():
    fp = tempfile.TemporaryDirectory(dir='F:/theitroad/Python')
    print('created temporary directory', fp.name)

create_temp_dir()

输出:

created temporary directory F:/theitroad/Python\tmpmkt8363n
  1. tempfile.mkdtemp –以最安全的方式创建一个临时目录。使用此功能,用户有责任在完成后删除临时目录及其内容。 mkdtemp()返回新目录的绝对路径名。
def create_temp_dir():
    fpath = tempfile.mkdtemp(suffix='py', dir='F:/theitroad/Python')
    print('created temporary directory', fpath)
    # removing temp dir
    os.rmdir(fpath)

create_temp_dir()

输出:

created temporary directory F:/theitroad/Python\tmpswqxki5spy