trouble with cmd.Cmd and prompting

Peter Otten __peter__ at web.de
Wed Jan 18 07:47:47 EST 2017


Cameron Simpson wrote:

> On 04Jan2017 12:20, Cameron Simpson <cs at zip.com.au> wrote:
>>I will try to get a minimal example others can run.
> 
> Well I've made some time for this, and it seems to be an interaction with
> my python3, the "input" builtin, and readline. Cmd.cmdloop behaves fine if
> I turn off the .raw_input attribute, and I can reproduce the issue without
> the cmd module.
> 
> Test code:
> 
>   import readline
>   line = input("F> ")
>   print("gap")
>   line = input("G> ")

If readline is not used input() writes its prompt to stderr. I don't have a 
Mac, but it might be worthwhile to investigate what goes where. For 
comparison here's what happens on my Linux system:

$ cat tmp.py
import sys

if "-r" in sys.argv:
    import readline

print(
    "uses readline" if "readline" in sys.modules
    else "no readline"
)
line = input("F> ")
print("gap")
line = input("G> ")

$ python3 tmp.py
no readline
F> alpha
gap
G> beta

$ python3 tmp.py 2>/dev/null
no readline
alpha
gap
beta

$ python3 tmp.py -r 2>/dev/null
uses readline
F> alpha
gap
G> beta
 





More information about the Python-list mailing list