我用anytree库创建一棵树。我希望能够对其进行修改,然后将其导出-保存到磁盘,并将其与修改一起导入。例如,示例树:
udo = Node("Udo")
marc = Node("Marc", parent=udo)
lian = Node("Lian", parent=marc)
dan = Node("Dan", parent=udo)
jet = Node("Jet", parent=dan)
jan = Node("Jan", parent=dan)
joe = Node("Joe", parent=dan)
Udo
├── Marc
│ └── Lian
└── Dan
├── Jet
├── Jan
└── Joe
我可以修改它,例如切断Dan并在Marc中添加一个children
^{pr2}$但是,当我将树导出到json,然后将其导入回json时,我似乎只能引用根节点。所以我不能再做这种修改了,因为像dan
或{
with open ('cajon/anytreeexample.json', 'r+', encoding = 'utf-8') as f:
datos = importer.read(f)
print (datos)
这意味着导入树之后,您所拥有的只是一个根节点
AnyNode(name='Udo') # Udo is the root
从这里你可以得到乌多的孩子
marc, dan = udo.children
lian = marc.children
jet, jan, joe = dan.children
但它们并不是一个节点
print (lian.parent)
AttributeError: 'tuple' object has no attribute 'parent'
似乎你不能让孩子依附在他们身上,这就是我设计这个结构的主要目的:
sonny = AnyNode("Sonny", parent = lian)
TypeError: __init__() got multiple values for argument 'parent'
所以我的问题是,有没有一种方法可以将json保存的树加载到一个适当的anytree结构中,在那里可以附加新的节点?在
实际上你做得对:你只是忘了一个
,
@How to find your nodes:您正在查找anytrees^{} :
所以在给你的树装上
^{pr2}$可以按名称搜索节点:
^{3}$然后再添加更多类似的内容:
相关问题 更多 >
编程相关推荐