Я пытаюсь использовать 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 в виде текстового блока без форматирования пробелов, где, как и в документах, это нужно делать построчно для захвата древовидной структуры. Похоже, что RenderTree(root)
не форматирует JSON в стиле Node первого примера.
Кто-нибудь знает, что происходит не так? Есть ли еще один шаг для правильного разбора JSON?