我正在尝试使用 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")
当我尝试按照文档导入 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 传递到文本文件中,将 JSON 作为文本块提供,没有空格格式,在文档中,这需要逐行完成以捕获树结构。所以看起来好像RenderTree(root)没有以第一个示例的 Node 样式格式化 JSON。
有谁知道出了什么问题?是否有正确解析 JSON 的另一个步骤?

