sAg*_*aga 5 python exception-handling networkx
当节点不在图中时,我得到异常错误。当我试图抓住并处理它时,我不能(所以我一定是做错了什么)。我如何捕捉和处理networkx.exception.NetworkXError?
这是错误:
<snip>
raise NetworkXError("The node %s is not in the digraph."%(n,))
networkx.exception.NetworkXError: The node 33293542 is not in the digraph.
这是我试图捕捉并处理它的方法:
try:
path_len = nx.shortest_path_length(G,uNode, vNode)
except (nx.NetworkXNoPath, nx.exception.NetworkXError) as e:
print e
continue
Run Code Online (Sandbox Code Playgroud)
我也试过:
try:
path_len = nx.shortest_path_length(G,uNode, vNode)
except (nx.NetworkXNoPath, KeyError) as e:
print e
continue
Run Code Online (Sandbox Code Playgroud)
我维护uNode并vNode在两个列表中,我可以做一个:if v in target_nodes:,但在我这样做之前,我想知道是否有一种优雅的方法来处理这个NetworkX exception?
如果您所做的只是确保您不会尝试获取不存在节点的路径长度,那么为什么不直接使用has_node:
if G.has_node(uNode) and G.has_node(vNode):
path_len = nx.shortest_path_length(G,uNode, vNode)
Run Code Online (Sandbox Code Playgroud)
编辑
以下对我有用:
In [76]:
import networkx as nx
G=nx.Graph()
G.add_edge(2,3)
try:
nx.shortest_path_length(G,0,1)
except nx.NetworkXError:
print("not found")
not found
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5485 次 |
| 最近记录: |