PythonAnytree:迭代时,知道分支何时关闭

PythonAnytree:迭代时,知道分支何时关闭,python,iteration,anytree,Python,Iteration,Anytree,使用文档中的示例: from anytree import Node, RenderTree, AsciiStyle f = Node("f") b = Node("b", parent=f) a = Node("a", parent=b) d = Node("d", parent=b) c = Node("c", parent=d) e = Node("e", parent

使用文档中的示例:

from anytree import Node, RenderTree, AsciiStyle

f = Node("f")
b = Node("b", parent=f)
a = Node("a", parent=b)
d = Node("d", parent=b)
c = Node("c", parent=d)
e = Node("e", parent=d)
g = Node("g", parent=f)
i = Node("i", parent=g)
h = Node("h", parent=i)
print(RenderTree(f, style=AsciiStyle()).by_attr())

f 
|-- b
|   |-- a
|   +-- d
|       |-- c
|       +-- e
+-- g
    +-- i
        +-- h
在我的例子中,树是文件格式的内部表示。在某个时候,我想把它写入一个文件。该格式命令每个节点都有一个开始和结束标记。(类似于html或xml,但它是二进制格式)

如果一个节点是一个叶子,很容易意识到它需要一个关闭标记,但对于更高级别的节点则不需要。使用
PreOrderIter
我需要输出以下内容:

open f -> f -> open b -> b -> open a -> a -> close a -> open d -> d -> open c -> c -> close c-> open e -> e-> close e -> close d -> close b

等等。问题是我如何实现一个节点子节点全部被遍历,然后写入close标记?

不用担心。你仍然可以做类似的事情

def traverse(node):
    print("open " + node + " -> " + node + " -> ")
    for child in node.children:
         traverse(child)
    print("close " + node + " -> ")

你会用这个。在遍历函数中,您可以
print
当前节点,对所有子节点调用函数,然后
print
关闭+当前节点。我的坏消息。还有一个开始标签。编辑的问题反映了这一点。