将svg保存到tempfile Python

提问

我正在使用创建.svg的第三方python库(专门用于进化树),该库具有树对象的渲染功能.我想要的是可以编辑的字符串形式的svg.目前,我保存svg并按以下方式读取文件:

tree.render('location/filename.svg', other_args...)
f = open('location/filename.svg', "r")
svg_string = f.read()
f.close()

这可行,但是可以使用临时文件代替吗?到目前为止,我有:

t = tempfile.NamedTemporaryFile()
tmpdir = tempfile.mkdtemp()
t.name = os.path.join(tmpdir, 'tmp.svg')
tree.render(t.name, other_args...)
svg_string = t.read()
t.close()

谁能解释为什么这行不通和/或在不创建文件的情况下该如何做(我只需要稍后删除).我继续编辑svg_string以便在Django应用程序中使用.

编辑:重要的是,渲染功能还可以用于创建其他文件类型,例如.png-因此需要指定.svg扩展名.

最佳答案

您不应为自己定义临时文件的名称.创建它时,该名称将被随机生成.您可以直接使用它.

t = tempfile.NamedTemporaryFile()
tree.render(t.name, other_args...)
t.file.seek(0) #reset the file pointer to the beginning
svg_string = t.read()
t.close()
评论