将networkx图导出到json图文件的方法?

时间:2015-08-21 05:34:39

标签: python json networkx

我有Method to save networkx graph to json graph?的后续问题,但Stack Overflow不允许我在Sirus的答案中添加评论,我想澄清一下,所以这里是我的问题。

  

将JSON数据写入文本文件的最佳方法是什么?

我试图做一个显而易见的步骤,写一个由NetworkX生成的json_graph文件,这样我就可以将它读入D3.js.我可以毫无问题地将它打印到控制台,因此我可以验证它是否可以创建适当的JSON数据。但是我将它保存到文件的尝试失败了(和通常的Python一样)文档基本上没用。这就是我的尝试:

with open('networkdata1.json', 'w') as outfile1:
    outfile1.write(json_graph.node_link_data(G))

它给了我错误:" TypeError:期望一个字符缓冲区对象"如果我使用简单的字符串而不是json图运行相同的代码,那么它可以完美地工作。问题在于将json对象转换为文本,并且我不知道如何做到这一点,并且我找不到包含此步骤的任何示例。一旦你知道它,我就确定它很简单,但是如果你不了解Python,那么很难从在线资料中找出这些东西。

将JSON数据写入文本文件的最佳方法是什么?如果这是正确的方法,还有什么可能导致这个问题?

2 个答案:

答案 0 :(得分:3)

Jamie走在正确的轨道上,并且在NetworkX页面上也有部分答案,将它们组合在一起创建了一个可行的解决方案:

with open('networkdata1.json', 'w') as outfile1:
    outfile1.write(json.dumps(json_graph.node_link_data(G)))

事实证明,有必要将图形转换为json_graph,然后将json转储到文本,然后将该文本写入文本文件。显然他们应该在文档中更明显地包含这一步骤,但希望下一个开始这条道路的人能够快速,轻松地找到这个简单的解决方案。

请确保您有import jsonimport networkx as nx才能使用此功能(尽管后者似乎并未真正出现在此代码段中)。

答案 1 :(得分:0)

您可能需要先将json转储到文本中。在大多数json库中,这是使用方法.dumps(object)完成的。

with open('networkdata1.json', 'w') as outfile1:
    outfile1.write(json_graph.dumps(G))

相反,阅读json通常是.loads(text_data)