Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将svg保存到临时文件Python_Python_Django_Svg_Temporary Files - Fatal编程技术网

将svg保存到临时文件Python

将svg保存到临时文件Python,python,django,svg,temporary-files,Python,Django,Svg,Temporary Files,我正在使用一个第三方python库来创建.svg(专门用于进化树),该库为树对象提供了一个渲染函数。我想要的是字符串形式的svg,我可以编辑它。目前,我保存了svg,并按如下方式读取该文件: tree.render('location/filename.svg', other_args...) f = open('location/filename.svg', "r") svg_string = f.read() f.close() 这是可行的,但是否可以改用临时文件?到目前为止,我已经: t

我正在使用一个第三方python库来创建
.svg
(专门用于进化树),该库为树对象提供了一个
渲染
函数。我想要的是字符串形式的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\u字符串
我继续编辑,以便在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()

回答不错,但我意识到我遗漏了一条重要信息,请查看编辑。如果按您的方式执行,则打印时,
t.read()
只是空白。对于扩展,您可以使用
后缀
参数
t=tempfile.NamedTemporaryFile(后缀=“.svg”)
。如果
t.read()
为空,是否尝试使用
t.file.seek(0)
行?这就成功了!
t.read()
之前是空的,因为如果没有扩展,渲染函数无法工作。如果你按照你描述的方式添加后缀,效果会很好。太好了。很乐意帮忙。