重命名python tempfi

2024-03-28 12:12:25 发布

您现在位置:Python中文网/ 问答频道 /正文

如何重命名下面的tempfile

pdf = render_me_some_pdf() #PDF RENDER
f = tempfile.NamedTemporaryFile()
f.write(pdf)
f.flush()

我读了一些关于os.rename的文章,但是我现在不知道如何应用它


Tags: pdfos文章somerendertempfilewrite重命名
2条回答

您可以通过f.name访问文件名。但是,除非使用delete=False,否则python将(尝试)在临时文件关闭后立即自动删除它。禁用自动删除将保留临时文件,即使您不保存它-所以这不是一个好主意。

最好的方法是复制文件并让python在关闭时删除临时文件:

import shutil
shutil.copy(f.name, 'new-name')

The best way is copying the file and letting python delete the temporary one when it's closed:

我觉得你最好用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()。 文件关闭后将自动刷新。

相关问题 更多 >