[Python-es] Una pregunta sobre la conversion dot => xdot

Carlos Zuniga carlos.zun en gmail.com
Mie Oct 10 01:37:45 CEST 2012


2012/10/9 Olemis Lang <olemis en gmail.com>:
> Hola a tod en s !
>
> Recientemente necesito convertir unos diagramas en formato .dot para
> obtener la misma representación en formato .xdoc . Busqué una librería
> q permitiera hacer esto sin ejecutar los comandos de Graphviz en un
> proceso o hilo aparte . Finalmente encontré yapgvb [1]_ ... pero el
> siguiente ejemplo no me funciona .
>
>  {{{
>  #!py
>
>  >>> from yapgvb import Graph
>  >>> from cStringIO import StringIO
>  >>> gdot = StringIO("digraph G {Hello->World}")
>  >>> g = Graph.read(gdot)
>  Traceback (most recent call last):
>    File "<stdin>", line 1, in <module>
>    File "/usr/lib/python2.6/dist-packages/yapgvb/__init__.py", line 253, in read
>      newgraph = cls(input_stream_or_filename)
>    File "/usr/lib/python2.6/dist-packages/yapgvb/__init__.py", line
>  551, in __init__
>      GraphBase.__init__(self, arg)
>    File "/usr/lib/python2.6/dist-packages/yapgvb/__init__.py", line
>  283, in __init__
>      CGraph.__init__(self,*args,**keywords)
>    File "/usr/lib/python2.6/dist-packages/yapgvb/__init__.py", line
>  187, in cgraph_init_wrapper
>      CGraph.__original_init__(self, *a,**b)
>  Boost.Python.ArgumentError: Python argument types in
>      CGraph.__init__(Graph, cStringIO.StringI)
>  did not match C++ signature:
>      __init__(_object*, _IO_FILE*)
>      __init__(_object*, boost::python::str, agraph_type)
>      __init__(_object*, boost::python::str)
>      __init__(_object*)
>
>  }}}
>
> Preguntas
>
>   - ¿Conocen alguna forma de hacer funcionar este ejemplo y
>     pasar el código .dot a graphviz utilizando un objeto StringIO o
>     equivalente (i.e. sin utilizar el sistema de archivos ;) ?

Parece que su constructor también acepta cadenas de python, has
intentado simplemente:

>>> gdot = "digraph G {Hello->World}"
>>> g = Graph.read(gdot)

Saludos
-- 
A menudo unas pocas horas de "Prueba y error" podrán ahorrarte minutos
de leer manuales.


Más información sobre la lista de distribución Python-es