📜  Python临时文件模块

📅  最后修改于: 2022-05-13 01:54:39.548000             🧑  作者: Mango

Python临时文件模块

Tempfile是一个Python模块,用于我们需要读取多个文件,更改或访问文件中的数据,并根据处理数据的结果给出输出文件的情况。程序完成后不再需要程序执行期间产生的每个输出文件。在这种情况下,出现了一个问题,即创建了许多输出文件,这使文件系统充满了不需要的文件,每次程序运行时都需要删除这些文件。

在这种情况下,临时文件用于创建临时文件,以便下次我们的程序完成时不必查找删除

使用临时文件

临时文件也可用于保护敏感数据。该模块包含许多创建临时文件和文件夹的功能,并可以轻松访问它们。

创建临时文件

假设您的应用程序需要一个临时文件在程序中使用,即它会创建一个文件,用它来存储一些数据,然后在使用后将其删除。为此,我们可以使用 TemporaryFile()函数。

  • 首先,我们必须导入临时文件,然后使用 TemporaryFile()函数创建文件。
  • 默认情况下,文件以 w+b(读取和写入打开的文件)模式打开。
  • 该函数在临时目录中创建一个临时文件并返回一个文件对象
  • 一旦文件对象关闭,临时文件夹中的文件条目就会被删除

代码:

Python3
import tempfile
  
temp = tempfile.TemporaryFile()
print('temp:',temp)
print('temp.name:', temp.name)
temp.close()


Python3
import tempfile
  
temp = tempfile.TemporaryFile()
  
try:
    temp.write(b'Hello world!')
    temp.seek(0)
  
    print(temp.read())
finally:
    temp.close()


Python3
import tempfile
  
f = tempfile.TemporaryFile()
  
try:
  f.write(b'Welcome to geeksforgeeks')
  f.seek(0)
  data=f.read()
  print(data)
finally:
  f.close()


Python3
import tempfile
  
print("Creating a named temporary file..")
temp = tempfile.NamedTemporaryFile()
  
print("Created file is:", temp)
print("Name of the file is:", temp.name)
temp.close()


Python3
import tempfile
  
fo = tempfile.NamedTemporaryFile()
print(fo.name)
  
fo.close()


Python3
import tempfile
  
temp = tempfile.NamedTemporaryFile(prefix="demoPrefix_",
                                   suffix="_demoSuffix")
  
print("Created file is:", temp)
print("Name of the file is:", temp.name)
temp.close()


Python3
import tempfile
  
temp=tempfile.NamedTemporaryFile(suffix='_greeks',
                                 prefix='forgreeks_')
print(temp.name)


输出:

temp: <_io.BufferedRandom name=6>
temp.name: 6

将纯文本读取和写入临时文件

类似于从文件中读取或写入,我们也可以使用相同类型的函数调用从临时文件中执行此操作!!

  • 创建一个临时文件并向其中写入一些数据
  • 写入后,您必须使用 seek() 回退文件句柄,以便从中读取数据。
  • 回到开头并从文件中读取数据
  • 关闭文件,它将被删除

示例 1:

蟒蛇3

import tempfile
  
temp = tempfile.TemporaryFile()
  
try:
    temp.write(b'Hello world!')
    temp.seek(0)
  
    print(temp.read())
finally:
    temp.close()

输出:

b'Hello world!'

示例 2:

蟒蛇3

import tempfile
  
f = tempfile.TemporaryFile()
  
try:
  f.write(b'Welcome to geeksforgeeks')
  f.seek(0)
  data=f.read()
  print(data)
finally:
  f.close()

输出:

b'Welcome to geeksforgeeks'

创建命名的临时文件

如果您的应用程序跨越多个进程,甚至多个主机,命名文件是在应用程序的各个部分之间传递文件的最简单方法。 NamedTemporaryFile()函数创建一个带有名称的文件,可通过 name 属性访问。

  • 首先导入临时文件,然后使用 NamedTemporaryFile()函数创建文件。
  • NamedTemporaryFile 返回一个类似文件的对象,可以用作临时存储,但是,与 TemporaryFile 不同,使用 NamedTemporaryFile 创建的文件保证在其生命周期内具有可见的名称。
  • TemporaryFile 在文件关闭后立即被销毁,NamedTemporaryFile 支持删除标志,默认为 True

示例 1:

蟒蛇3

import tempfile
  
print("Creating a named temporary file..")
temp = tempfile.NamedTemporaryFile()
  
print("Created file is:", temp)
print("Name of the file is:", temp.name)
temp.close()

输出:

Creating a named temporary file..
Created file is: 
Name of the file is: /tmp/tmpg8efl258

示例 2:

蟒蛇3

import tempfile
  
fo = tempfile.NamedTemporaryFile()
print(fo.name)
  
fo.close()

输出:

/tmp/tmp6nxmoagy

提供文件名后缀和前缀

有时我们需要为临时文件的名称添加前缀或后缀。它将帮助我们识别由我们的程序创建的所有临时文件

  • 我们可以使用参数“suffix”和“prefix”为命名临时文件的名称添加后缀或前缀。
  • 使用上面定义的相同 NamedTemporaryFile函数。我们唯一需要添加的是调用此函数时的两个额外参数:后缀和前缀
  • 因此,如果我们将两个额外的参数后缀和前缀传递给 NamedTemporaryFile()函数,它会自动在文件名的开头和结尾添加这些

示例 1:

蟒蛇3

import tempfile
  
temp = tempfile.NamedTemporaryFile(prefix="demoPrefix_",
                                   suffix="_demoSuffix")
  
print("Created file is:", temp)
print("Name of the file is:", temp.name)
temp.close()

输出:

Created file is: 
Name of the file is: /tmp/demoPrefix_t_inxb7v_demoSuffix

示例 2:

蟒蛇3

import tempfile
  
temp=tempfile.NamedTemporaryFile(suffix='_greeks',
                                 prefix='forgreeks_')
print(temp.name)

输出:

/tmp/forgreeks_4sigabye_greeks