2024-03-28 12:12:25 发布
网友
如何重命名下面的tempfile
pdf = render_me_some_pdf() #PDF RENDER f = tempfile.NamedTemporaryFile() f.write(pdf) f.flush()
我读了一些关于os.rename的文章,但是我现在不知道如何应用它
您可以通过f.name访问文件名。但是,除非使用delete=False,否则python将(尝试)在临时文件关闭后立即自动删除它。禁用自动删除将保留临时文件,即使您不保存它-所以这不是一个好主意。
f.name
delete=False
最好的方法是复制文件并让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:
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在关闭时删除临时文件:
我觉得你最好用
os.link
:它使用
os.link
创建到临时文件的硬链接,该文件 将在自动删除临时文件后保持。此代码有几个优点:
tempfile
对象作为上下文管理器,所以我们不使用 需要担心是否要显式地关闭它。f.flush()
。 文件关闭后将自动刷新。相关问题 更多 >
编程相关推荐