重命名以下临时文件的方法是什么
pdf = render_me_some_pdf() #PDF RENDER
f = tempfile.NamedTemporaryFile()
f.write(pdf)
f.flush()
我读过关于os.rename的事情,但我现在不知道如何应用它
答案 0 :(得分:21)
最好的方法是复制文件,让python在关闭时删除临时文件:
我认为你最好使用os.link
:
with tempfile.NamedTemporaryFile(dir=os.path.dirname(actual_name)) as f:
f.write(pdf)
os.link(f.name, actual_name)
这使用os.link
创建临时文件的硬链接
在自动删除临时文件后会保留。
此代码有几个优点:
tempfile
对象作为上下文管理器,所以我们不这样做
需要担心明确关闭它。f.flush()
。
该文件将在关闭时自动刷新。答案 1 :(得分:5)
您可以通过f.name
访问文件名。但是,除非您使用delete=False
python将(尝试)在关闭时自动删除临时文件。即使你不保存,禁用自动删除也会保留tempfile - 所以这不是一个好主意。
最好的方法是复制文件,让python在关闭时删除临时文件:
import shutil
shutil.copy(f.name, 'new-name')