On 2/1/19 2:51 PM, Chris Angelico wrote:
On Sat, Feb 2, 2019 at 7:39 AM Dan Sommers
<2qdxy4rzwzuui...@potatochowder.com> wrote:

On 2/1/19 2:26 AM, João Matos wrote:
> Hello,
>
>
> Consider adding the option of running shell/console commands inside the REPL.
> Something like
>>>>!dir

(This might be better on python-list rather than here)

I first ran into this in the days of teletypes and dumb
terminals, where other programs let you run shell commands
from inside them.  Now the shoe appears to be on the other
foot.

So why not turn that around?  ksh (since way back when) and
bash (since 2008, according to what I read somewhere online)
have "co-processes," which allow you to run a command "in
the background," and send commands and receive replies from
it.  So I tried it with Python, but it didn't work:

     $ coproc P3 { python3; }
     $ echo 'import sys; print(sys.version)' >&${P3[1]}
     $ read v <&${P3[0]}
     [the read command just waits forever]

Looks like you may have a problem with output buffering. Try running
"python3 -u" to tell it to run stdout/stderr unbuffered - otherwise,
Python assumes that its output is going to a file and it won't matter.
Alternatively, explicitly flush stdout after output, which could be
done with a display hook:

_old_hook = sys.displayhook
def display(obj):
     _old_hook(obj)
     sys.stdout.flush()
sys.displayhook = display

But unless you're expecting a lot of output, it's probably easier and
just as effective to simply use "-u".

I thought about the output buffering, but it fails in the same
way even if I send a quit() command to the process, and I still
don't see any output in the tee file.  OTOH, if I use "-i," then
it works.  So it's probably not a simple buffering problem, but
at least I have a workaround.

Thanks,
Dan

(Sorry, Chris, for mis-sending this the first time.  Sadly,
my email client isn't perfect when it comes to recognizing
and replying to mailing list messages.)
_______________________________________________
Python-ideas mailing list
Python-ideas@python.org
https://mail.python.org/mailman/listinfo/python-ideas
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to