重命名以下临时文件的方法是什么
pdf = render_me_some_pdf() #PDF RENDER
f = tempfile.NamedTemporaryFile()
f.write(pdf)
f.flush()
Run Code Online (Sandbox Code Playgroud)
我读了一些关于os.rename的事情,但我现在还不知道如何应用它
lar*_*sks 24
最好的方法是复制文件,让python在关闭时删除临时文件:
我实际上认为你最好使用os.link:
with tempfile.NamedTemporaryFile(dir=os.path.dirname(actual_name)) as f:
f.write(pdf)
os.link(f.name, actual_name)
Run Code Online (Sandbox Code Playgroud)
这用于os.link创建临时文件的硬链接,该链接将在自动删除临时文件后保留.
此代码有几个优点:
tempfile对象用作上下文管理器,因此我们不必担心明确地关闭它.f.flush().文件将在关闭时自动刷新.您可以通过访问文件名f.name.但是,除非你使用delete=Falsepython将(尝试)一旦关闭临时文件自动删除.即使你没有保存,禁用自动删除也会保留tempfile - 所以这不是一个好主意.
最好的方法是复制文件,让python在关闭时删除临时文件:
import shutil
shutil.copy(f.name, 'new-name')
Run Code Online (Sandbox Code Playgroud)