Cameron Laird wrote:
> In article <[EMAIL PROTECTED]>,
> Edward Elliott <[EMAIL PROTECTED]> wrote:
> >Kevin Simmons wrote:
> >> I have a python script that prompts the user for input from stdin via a
> >> menu. I want to process that input when the user types in two characters
> >> and not have to have the user press <CR>. As a comparison, in the bash
> >> shell one can use (read -n 2 -p "-->" CHOICE; case $CHOICE in...). Works
> >> great and is very
> >
> >I did something like this a couple years ago, curses was the easiest way I
> >found to do it. It's pretty painless with the wrapper function, which
> >restores your terminal on error/exit.
> >
>
> Kevin, the bad news is that curses() is as good as Python gets in
> this regard. For better or worse, to the best of my knowledge,
> unextended Python caNOT implement bash's read. Here's the closest
> small approximation I know:
>
> import curses
> import os
>
> msvcrt = curses.initscr()
> msvcrt.addstr("-->")
> first = msvcrt.getch()
> second = msvcrt.getch()
> os.system("stty echo -nl")
> print "\nThe two characters are '%s' and '%s'." % (first, second)
>
> I hope someone proves me wrong.
I'm not sure what "unextended Python" means, but on POSIX platforms
termios module can disable echo and command line option -u can disable
buffering. I think there should be a way to disable buffering after
program started. Probably fcntl module.
--
http://mail.python.org/mailman/listinfo/python-list