PyRun_String with Py_single_input to stdout?

stuart.tett at gmail.com stuart.tett at gmail.com
Mon Jun 18 11:37:37 EDT 2007


I found a solution using sys.displayhook here:
http://groups.google.com/group/comp.lang.python/browse_thread/thread/593cd28e568c32e1/1e0f930e7ac5ebb2?#1e0f930e7ac5ebb2

On Jun 18, 4:24 am, "Gabriel Genellina" <gagsl-... at yahoo.com.ar>
wrote:
> En Mon, 18 Jun 2007 01:45:38 -0300, stuart.t... at gmail.com
> <stuart.t... at gmail.com> escribió:
>
> > I'm using PyRun_String with Py_single_input for a python interpreter
> > embedded in my application. I'm using Py_single_input. Py_single input
> > is what I want, but it seems to output to stdout. Before when I was
> > using Py_eval_input I was able to grab the result so I could print it
> > in a text box:
>
> >      PyObject *resultObject = PyObject_Str( rstring );
> >      if( resultObject != NULL ) {
> >        char *string = PyString_AsString( resultObject );
> >           }
>
> > But Py_eval_input is only for isolated evaluation, not what I want.
> > Py_single_input gives "None" for the string.
>
> Maybe because it actually returns None?

No it doesn't. I know the function returns something because when I
used Py_eval_input, it returned the correct output. The only
difference is thate Py_string_input outputs using sys.write (stdout)

>
> > I wrote a class that redirects std::cout, but this doesn't work for
> > this, I'm guessing because it uses printf to stdout, not cout.
>
> > Anyone know how I can get the string so I can print it in a text box.
>
>  From your description this should be working... try posting some more code
> showing how you call PyRun_String and how you process the result...
>
> --
> Gabriel Genellina





More information about the Python-list mailing list