创建临时文件和文件夹(创建临时文件和文件夹)
在程序执行时创建一个临时文件或目录,并希望使用完之后可以自动销毁掉,我来为大家讲解一下关于创建临时文件和文件夹?跟着小编一起来看一看吧!
创建临时文件和文件夹
1. 现象在程序执行时创建一个临时文件或目录,并希望使用完之后可以自动销毁掉
2. 原因分析- 无
tempFile 模块中有很多的函数可以完成这任务。为了创建一个匿名的临时文件,可以使用 tempfile.TemporaryFile
import tempfile
import os.path
# '<tempfile._TemporaryFileWrapper object at 0x0000023236E332B0>'
f_obj = tempfile.TemporaryFile('w t', encoding='utf-8')
# 'C:\Users\ADMINI~1\AppData\Local\Temp\tmpiu8k36rp'
print(f_obj.name)
# 写入数据
f_obj.write('Hello World\n')
f_obj.write('Cory Testing\n')
# 回到开始位
f_obj.seek(0)
# 'Hello World\nCory Testing\n'
data = f_obj.read()
print(data)
"""
Hello World
Cory Testing
"""
# 如果不写 也会根据垃圾回收机制 将生成的临时文件删除
f_obj.close()
也可以使用with语句
with tempfile.TemporaryFile('w t', encoding='utf-8') as f_obj:
print(f_obj.name)
print(os.path.normpath(f_obj.name))
f_obj.write('Hello World\n')
f_obj.write('Cory Testing\n')
f_obj.seek(0)
data = f_obj.read()
print(data)
TemporaryFile 的第一个参数是文件模式,通常来讲文本模式使用 w t ,二进制模式使用 w b,其他参数与 open 函数相同
参数 |
解释 |
mode |
模式参数,默认'w b' 创建的文件可读可写,b表示二进制模式,可以通用所有系统平台 |
buffering |
与 open 函数相同,用于设置缓冲策略的可选整数,可选值0,1, >1 ,0表示缓冲buffering关闭,1代表行缓冲,>1 表示初始化的buffering缓冲 |
encoding |
与 open 函数相同,返回的数据采用何种编码 |
newline |
与 open 函数相同,控制通用换行符模式的工作原理 |
suffix |
文件名后缀,值为None,表示没有后缀 |
prefix |
文件名前缀,如果值为None,使用默认使用 gettempprefix 和 gettempprefixb 返回的值作为前缀, |
dir |
文件所在目录,如果值为None,使用默认目录保存文件 |
在大多数 Unix 系统上,通过 TemporaryFile 创建的文件都是匿名的,甚至连目录都没有。如果你想打破这个限制,可以使用 NamedTemporaryFile 来代替
实验得知,两者的名称都可以获得
named_f_obj = tempfile.NamedTemporaryFile('w t', encoding='utf-8')
# 'C:\Users\ADMINI~1\AppData\Local\Temp\tmpm_1vwckp'
print(named_f_obj.name)
unamed_f_obj = tempfile.TemporaryFile('w t', encoding='utf-8')
# 'C:\Users\ADMINI~1\AppData\Local\Temp\tmpozlh_men'
print(unamed_f_obj.name)
# TemporaryFile 与 NamedTemporaryFile 一样,结果文件关闭时会被自动删除掉。如果不想这么做,可以传递一个关键字参数delete=False 即可
named_f_obj = tempfile.NamedTemporaryFile('w t', encoding='utf-8', delete=False)
# 'C:\Users\ADMINI~1\AppData\Local\Temp\tmp55k__4ri'
print(named_f_obj.name)
unamed_f_obj = tempfile.TemporaryFile('w t', encoding='utf-8', delete=False)
# 'C:\Users\ADMINI~1\AppData\Local\Temp\tmpvoegzv8z'
print(unamed_f_obj.name)
为了创建一个临时目录,可以使用 tempfile.TemporaryDirectory()
with tempfile.TemporaryDirectory() as dir_name:
# 'C:\Users\ADMINI~1\AppData\Local\Temp\tmpikl6vb6b'
print('Dirname is : ', dir_name)
TemporaryFile、 NamedTemporaryFile 和 TemporaryDirectory 函数应该是处理临时文件目录的最简单的方式了,因为它们会自动处理所有的创建和清理步骤
在一个更低的级别,可以使用 mkstemp 和 mkdtemp 来创建临时文件和目录
# '(3, 'C:\\Users\\ADMINI~1\\AppData\\Local\\Temp\\tmpbizsgx_3')'
tempfile.mkstemp()
# 'C:\Users\ADMINI~1\AppData\Local\Temp\tmpv3jye9ql'
tempfile.mkdtemp()
但是,这些函数并不会做进一步的管理了,要自己清理这些文件
通常来讲,临时文件在系统默认的位置被创建,比如Unix下 /var/tmp 或类似的地方
所有和临时文件相关的函数都允许你通过使用关键字参数 prefix 、 suffix 和 dir来自定义目录以及命名规则
f_obj = tempfile.NamedTemporaryFile(prefix='Temp_', suffix='.info', dir='E:\Temp')
# 'E:\Temp\Temp_sj35onql.info'
print(f_obj.name)
- 无
免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com