答案 0 :(得分:0)
注意:这是我第一次遇到 pygraphml 。
问题似乎是图表定义文件( test.graphml )中的逻辑错误。除了pygraphml2.0之外,似乎没有处理好这样的错误:
正如所指出的,错误:e[attr.getAttribute("key")] = attr.firstChild.data
来自 graphml_parser.py 行 114 :
e
pygraphml.edge.Edge
/ 应类型为e = g.add_edge_by_label(source, dest)
的对象,并在 110 行的同一文件中初始化:
e
问题是None
是g
,因此是错误。 e
(实例化pygraphml.graph.Graph
)是add_edge_by_label
类型的对象。转到 graph.py ,def add_edge_by_label(self, label1, label2):
"""
"""
n1 = None
n2 = None
for n in self._nodes:
if n['label'] == label1:
n1 = n
if n['label'] == label2:
n2 = n
if n1 and n2:
return self.add_edge(n1, n2)
else:
return
在 147 行定义:
return
所以,你正在敲击最后一个Graph.add_edge_by_label
语句,这意味着在 test.graphml 中你有(至少)一个边有一个标签(或者两个都有),不属于任何图形节点。
显然,使用 pygraphml 会出现问题(我认为这是一个错误),如果None
可以返回None
,则应执行GraphMLParser.parse
测试{{ 1}}(也可能在其他地方)。
HTH(如果没有,你可以把图形文件发给我看看)。