我正在使用第三方python库创建.svg
(专门用于进化树),它具有树对象的render
函数。我想要的是我可以编辑的字符串形式的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
扩展名。
答案 0 :(得分:4)
您不应该自己定义临时文件的名称。创建它时,将随机生成名称。你可以直接使用它。
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()