<div dir="ltr">I've tested "python -i" before but without stderr_to_stdout.<br>With stderr_to_stdout it works.<br><br>Not sure why it is needed. I thought that it only direct errors to stdout.<br><br>Thanks.<br>
<br><div class="gmail_quote">On Mon, Jan 28, 2013 at 1:49 AM, Garrett Smith <span dir="ltr"><<a href="mailto:g@rre.tt" target="_blank">g@rre.tt</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
I would still consider using erlport and the eval function to evaluate commands:<br>
<br>
<a href="http://docs.python.org/2/library/functions.html#eval" target="_blank">http://docs.python.org/2/library/functions.html#eval</a><br>
<br>
This will give you control over what you're doing.<br>
<br>
Unless you're trying to literally screen-scrape Python. If that's your<br>
goal, you'll want to run Python in interactive mode with the -i option<br>
(man python).<br>
<br>
1> P = erlang:open_port({spawn, "python -i"}, [stderr_to_stdout]).<br>
#Port<0.516><br>
2> flush().<br>
Shell got {#Port<0.516>,<br>
           {data,"Python 2.7.3 (default, Aug  1 2012, 05:14:39) \n[GCC<br>
4.6.3] on linux2\n"}}<br>
Shell got {#Port<0.516>,<br>
           {data,"Type \"help\", \"copyright\", \"credits\" or<br>
\"license\" for more information.\n"}}<br>
Shell got {#Port<0.516>,{data,">>> "}}<br>
ok<br>
3> erlang:port_command(P, "print 1\n").<br>
true<br>
4> flush().<br>
Shell got {#Port<0.516>,{data,"1\n>>> "}}<br>
ok<br>
<span class="HOEnZb"><font color="#888888"><br>
Garrett<br>
</font></span><div class="HOEnZb"><div class="h5"><br>
On Sun, Jan 27, 2013 at 5:03 PM, pablo platt <<a href="mailto:pablo.platt@gmail.com">pablo.platt@gmail.com</a>> wrote:<br>
> erlport looks interesting but I don't need to manipulate the python shell<br>
> response.<br>
> I want to start a python shell (or any other shell), send arbitrary commands<br>
> to it and get the response.<br>
><br>
><br>
> On Mon, Jan 28, 2013 at 12:53 AM, Steve Vinoski <<a href="mailto:vinoski@ieee.org">vinoski@ieee.org</a>> wrote:<br>
>><br>
>><br>
>><br>
>> On Sun, Jan 27, 2013 at 4:56 PM, pablo platt <<a href="mailto:pablo.platt@gmail.com">pablo.platt@gmail.com</a>><br>
>> wrote:<br>
>>><br>
>>> How can I get the output of a python shell?<br>
>>><br>
>>> This is what I'm trying to do:<br>
>>> > Port = open_port({spawn, "python"}, [binary, exit_status]).<br>
>>> #Port<0.586><br>
>>> > port_command(Port, "print 1\n").<br>
>>> true<br>
>>> > flush().<br>
>>> ok<br>
>>><br>
>>> When calling flush(), I expect to get {Port,{data, <<"1\n">>}}<br>
>>> but I'm not getting any message.<br>
>><br>
>><br>
>> You might want to try ErlPort:<br>
>><br>
>> <a href="http://erlport.org" target="_blank">http://erlport.org</a><br>
>><br>
>> Otherwise, you're just going to have to re-code what ErlPort already gives<br>
>> you.<br>
>><br>
>> --steve<br>
><br>
><br>
><br>
</div></div><div class="HOEnZb"><div class="h5">> _______________________________________________<br>
> erlang-questions mailing list<br>
> <a href="mailto:erlang-questions@erlang.org">erlang-questions@erlang.org</a><br>
> <a href="http://erlang.org/mailman/listinfo/erlang-questions" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a><br>
><br>
</div></div></blockquote></div><br></div>