重命名以下临时文件的方法是什么
pdf = render_me_some_pdf() #PDF RENDER
f = tempfile.NamedTemporaryFile()
f.write(pdf)
f.flush()
我读了一些关于 os.rename 但我现在真的不知道如何应用它
重命名以下临时文件的方法是什么
pdf = render_me_some_pdf() #PDF RENDER
f = tempfile.NamedTemporaryFile()
f.write(pdf)
f.flush()
我读了一些关于 os.rename 但我现在真的不知道如何应用它
最好的方法是复制文件并让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()
. 该文件将在关闭时自动刷新。您可以通过 访问文件名f.name
。但是,除非您使用delete=False
python,否则将(尝试)在临时文件关闭后立即自动删除它。即使您不保存临时文件,禁用自动删除也会保留它 - 所以这不是一个好主意。
最好的方法是复制文件并让python在关闭时删除临时文件:
import shutil
shutil.copy(f.name, 'new-name')