Python 使用Networkx,如何将graphml和其他格式写入字符串而不是文件?

Python 使用Networkx,如何将graphml和其他格式写入字符串而不是文件?,python,networkx,graphml,Python,Networkx,Graphml,我对networkx的使用非常肤浅。将图形写入文件(如graphml)很容易,但如何将其保存为字符串而不影响文件系统 说这是可能的。正如拉斯曼评论的那样,可以使用: 正如larsmans所评论的,可以使用: 大多数格式也有一个“生成器”。因此,无需使用StringIO,您就可以这样做: In [1]: import networkx as nx In [2]: G=nx.path_graph(4) In [3]: s='\n'.join(nx.generate_graphml(G)) In

我对networkx的使用非常肤浅。将图形写入文件(如graphml)很容易,但如何将其保存为字符串而不影响文件系统


说这是可能的。

正如拉斯曼评论的那样,可以使用:


正如larsmans所评论的,可以使用:


大多数格式也有一个“生成器”。因此,无需使用StringIO,您就可以这样做:

In [1]: import networkx as nx

In [2]: G=nx.path_graph(4)

In [3]: s='\n'.join(nx.generate_graphml(G))

In [4]: print s
<graphml xmlns="http://graphml.graphdrawing.org/xmlns" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns http://graphml.graphdrawing.org/xmlns/1.0/graphml.xsd">
  <key attr.name="name" attr.type="string" for="graph" id="d0" />
  <graph edgedefault="undirected">
    <data key="d0">path_graph(4)</data>
    <node id="0" />
    <node id="1" />
    <node id="2" />
    <node id="3" />
    <edge source="0" target="1" />
    <edge source="1" target="2" />
    <edge source="2" target="3" />
  </graph>
</graphml>
[1]中的
:将networkx导入为nx
在[2]中:G=nx.路径图(4)
在[3]中:s='\n'.join(nx.generate_graphml(G))
在[4]中:打印
路径图(4)

大多数格式也有一个“生成器”。因此,无需使用StringIO,您就可以这样做:

In [1]: import networkx as nx

In [2]: G=nx.path_graph(4)

In [3]: s='\n'.join(nx.generate_graphml(G))

In [4]: print s
<graphml xmlns="http://graphml.graphdrawing.org/xmlns" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns http://graphml.graphdrawing.org/xmlns/1.0/graphml.xsd">
  <key attr.name="name" attr.type="string" for="graph" id="d0" />
  <graph edgedefault="undirected">
    <data key="d0">path_graph(4)</data>
    <node id="0" />
    <node id="1" />
    <node id="2" />
    <node id="3" />
    <edge source="0" target="1" />
    <edge source="1" target="2" />
    <edge source="2" target="3" />
  </graph>
</graphml>
[1]中的
:将networkx导入为nx
在[2]中:G=nx.路径图(4)
在[3]中:s='\n'.join(nx.generate_graphml(G))
在[4]中:打印
路径图(4)

这应该可以使用
StringIO
实现。我是否可以反转此过程?i、 从字符串生成图形?这应该可以使用
StringIO
。我是否可以反转此过程?i、 从字符串生成图形?你试过运行这个吗?它因一个空图而失败;当您修复该问题时,
getvalue()
失败,因为在
write\u graphml
完成后,伪文件被关闭。是的,我尝试运行它。“添加节点和边”只是为了演示,而
getvalue()
对我来说很好。我的更新正是我运行的。结果发现我运行的是一个过时的networkx版本,他们同时修复了这个问题+1给你。你试过运行这个吗?它因一个空图而失败;当您修复该问题时,
getvalue()
失败,因为在
write\u graphml
完成后,伪文件被关闭。是的,我尝试运行它。“添加节点和边”只是为了演示,而
getvalue()
对我来说很好。我的更新正是我运行的。结果发现我运行的是一个过时的networkx版本,他们同时修复了这个问题+我在发布我的答案后浏览了来源,看到了发电机呼叫,但我没有看到解决方案+1在发布我的答案后,我浏览了来源,看到了生成器调用,但我没有看到解决方案+1.