Search code examples
pythonnetworkxgraphml

with Networkx, how to write graphml and other format into a string, instead of a file?


I'm using networkx very superficially. It's easy to write a graph to a file, like graphml, but how can I save it into a string without bothering the file system?

Its doc says it is possible.


Solution

  • Most of the formats also have a "generator". So you can do it this way without using 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>