【发布时间】:2019-06-24 17:16:43
【问题描述】:
我正在尝试使用 anytree 读取 JSON 文件并使用渲染树图将其导出为 png 图像。对于我创建它工作的节点的基本示例。
from anytree import RenderTree
from anytree import Node
from anytree.dotexport import RenderTreeGraph
root = Node("root")
s0 = Node("s0", parent=root)
s1 = Node("s1", parent=root)
t1 = Node("t1", parent=s0)
print(root)
RenderTreeGraph(root).to_picture("test.png")
当我尝试按照 docs 导入 json 文件时
from anytree.importer import JsonImporter
from anytree import RenderTree
from anytree import Node
from anytree.dotexport import RenderTreeGraph
importer = JsonImporter()
path = open("config.json")
root = importer.read(path)
tree = RenderTree(root)
print(tree)
RenderTreeGraph(tree).to_picture("test.png")
我收到以下错误:
Traceback (most recent call last):
File "pyth.py", line 20, in <module>
DotExporter(tree).to_dotfile("tree.dot")
File "/home/user/.local/lib/python3.5/site-packages/anytree/exporter/dotexporter.py", line 214, in to_dotfile
for line in self:
File "/home/user/.local/lib/python3.5/site-packages/anytree/exporter/dotexporter.py", line 160, in __iter
for node in self.__iter_nodes(indent, nodenamefunc, nodeattrfunc):
File "/home/user/.local/lib/python3.5/site-packages/anytree/exporter/dotexporter.py", line 174, in __iter_nodes
nodename = nodenamefunc(node)
File "/home/user/.local/lib/python3.5/site-packages/anytree/exporter/dotexporter.py", line 142, in __default_nodenamefunc
return node.name
AttributeError: 'RenderTree' object has no attribute 'name'
将print(tree) 传递到文本文件中,将 JSON 作为文本块提供,没有空格格式,在文档中,这需要逐行完成以捕获树结构。所以看起来RenderTree(root) 没有按照第一个示例的 Node 样式格式化 JSON。
有谁知道出了什么问题?是否还有正确解析 JSON 的步骤?
【问题讨论】:
-
你还想要答案吗?
-
是的,仍然可以做一件有用的事情:)