参考连接
https://www.cnblogs.com/dream4567/p/10819472.html
Windows操作系统
单独运行这些没问题,但是当我调用的时候,会出现问题,总结那块阐述 ~
1、当有 delete=False 会存在C盘,C:\Users\LIUWENYU\AppData\Local\Temp\tmppzweoxnj
2、当没有 delete=False,程序运行完会自动删除,不保存
from tempfile import NamedTemporaryFile
# with NamedTemporaryFile('w+t',delete=False) as f:
with NamedTemporaryFile('w+t') as f:
print('filename:',f.name)
# 结果:
# filename: C:\Users\LIUWENYU\AppData\Local\Temp\tmppzweoxnj
官网:https://docs.python.org/2/library/tempfile.html
Linux系统:
咋样都能用 ~,所以没问题
总结:
系统 | with NamedTemporaryFile(‘w+b’,delete=False) as tmp: | with NamedTemporaryFile(‘w+b’) as tmp: |
---|---|---|
Windows | 正常运行,运行结束保留临时文件 | 不能运行,不保留临时文件 |
Linux | 正常运行,运行结束保留临时文件 | 正常运行,运行结束不保留临时文件 |
注意: 上述Windows系统,复制代码,看C盘,可以试验一下;当我封装类,调用的时候会报错,下面小记阐述
个人小记:
windows系统:
首先,我是通过代码,生成一个excel,然后通过url,数据流方式,下载;
(实现这个目的)
1、当我使用 with NamedTemporaryFile(‘w+b’) as tmp:
2、网页直接报错!!!
3、代码错误提示!!!
Permission denied: 'C:\Users\LIUWENYU\AppData\Local\Temp\tmpr_vpfba3’
原因: 大概意思是,当这个临时文件处于打开状态,在unix平台,该名字可以用于再次打开临时文件,但是在windows不能。所以,如果要在windows打开该临时文件,需要将文件关闭,然后再打开,操作完文件后,再调用os.remove删除临时文件。
参考文章:https://blog.csdn.net/leo881205/article/details/79274836
4、换成: with NamedTemporaryFile(‘w+b’,delete=False) as tmp:
虽然可以下载,但是保留了临时文件