How to implement a python REPL that nicely handles asynchronous output?
Posted
by andy
on Stack Overflow
See other posts from Stack Overflow
or by andy
Published on 2009-01-12T21:11:44Z
Indexed on
2010/03/30
7:03 UTC
Read the original article
Hit count: 401
I have a Python-based app that can accept a few commands in a simple read-eval-print-loop. I'm using raw_input('> ')
to get the input. On Unix-based systems, I also import readline
to make things behave a little better. All this is working fine.
The problem is that there are asynchronous events coming in, and I'd like to print output as soon as they happen. Unfortunately, this makes things look ugly. The "> " string doesn't show up again after the output, and if the user is halfway through typing something, it chops their text in half. It should probably redraw the user's text-in-progress after printing something.
This seems like it must be a solved problem. What's the proper way to do this?
Also note that some of my users are Windows-based.
TIA
Edit: The accepted answer works under Unixy platforms (when the readline module is available), but if anyone knows how to make this work under Windows, it would be much appreciated!
© Stack Overflow or respective owner