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