标签:Users AppData Python T14 tempfile print 临时文件 Local 目录
1. 问题
创建一个临时文件夹或目录,并希望使用完之后自动销毁。
2. 解决方案
tempfile
模块中很多的函数可以完成这任务。
创建一个匿名临时文件,可以使用tempfile.TemporaFile
。这种方式文件会自动销毁。
from tempfile import TemporaryFile
with TemporaryFile('w+t') as f:
# Read/write to the file
f.write('Hello World\n')
f.write('Testing\n')
# 返回到开头并读取数据
f.seek(0)
data = f.read()
print(data)
f = TemporaryFile('w+t')
f.write('Hello World\n')
f.write('Testing')
f.seek(0)
print(f.read())
上述两种方法等价。输出:
Hello World
Testing
TemporaFile
的第一个参数是文件模式,文本模式使用w+t
,二进制模式使用w+b
。TemporaryFile()
另外还支持跟内置的 open()
函数一样的参数。
with TemporaryFile('w+t', encoding='utf-8', errors='ignore') as f:
创建有名字的临时文件。可以使用NamedTemporaryFile()
。这种方式文件会自动销毁。
from tempfile import NamedTemporaryFile
f = NamedTemporaryFile(prefix='mytemp', suffix='.md', dir='C:/Users/T14/AppData/Local/Temp/')
print(f.name)
C:\Users\T14\AppData\Local\Temp\mytempcecb12hp.md
创建临时目录。可以使用tempfile.TemporaryDirectory
。
from tempfile import TemporaryDirectory
dir = TemporaryDirectory()
print(dir.name)
with TemporaryDirectory() as dirname:
print(dirname)
上述两种方法等价。输出:
C:\Users\T14\AppData\Local\Temp\tmpac0p48m1
C:\Users\T14\AppData\Local\Temp\tmphjcngywq
3. 讨论
TemporaryFile()
、NamedTemporaryFile()
和 TemporaryDirectory()
是处理临时文件、目录的最简单的方式了,因为它们会自动处理所有的创建和清理步骤。 在一个更低的级别,你可以使用 mkstemp()
和 mkdtemp()
来创建临时文件和目录。比如:
import tempfile
tmp = tempfile.mkstemp() # 生成临时文件
print(tmp)
print(tempfile.gettempdir()) # 查看临时文件、目录路径
tmp2 = tempfile.mkdtemp() # 生成临时目录
print(tmp2)
print(tempfile.gettempdir())
(3, 'C:\\Users\\T14\\AppData\\Local\\Temp\\tmp8al28qr3')
C:\Users\T14\AppData\Local\Temp
C:\Users\T14\AppData\Local\Temp\tmphdj6ac__
C:\Users\T14\AppData\Local\Temp
但是,这些函数并不会做进一步的管理了。 例如,函数 mkstemp()
仅仅就返回一个原始的OS文件描述符,你需要自己将它转换为一个真正的文件对象。 同样你还需要自己清理这些文件。
所有和临时文件相关的函数都允许你通过使用关键字参数 前缀prefix
、后缀suffix
和 文件路径dir
来自定义目录以及命名规则。比如:
f = NamedTemporaryFile(prefix='mytemp', suffix='.md', dir='C:/Users/T14/AppData/Local/Temp/')
print(f.name)
C:\Users\T14\AppData\Local\Temp\mytempyqr3xvy7.md
最后一点,尽可能以最安全的方式使用 tempfile
模块来创建临时文件。
标签:Users,AppData,Python,T14,tempfile,print,临时文件,Local,目录 来源: https://www.cnblogs.com/keye/p/16577759.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。