Re: stdin: processing characters
Available news archives: comp.lang.tcl - comp.lang.python - comp.security.firewalls - sci.crypt - comp.lang.php - comp.lang.javascript
Google
 
Web news.hping.org


comp.lang.python archive

Re: stdin: processing characters

From: Cameron Laird <claird@lairds.us>
Date: Sun Apr 30 2006 - 15:07:42 CEST

In article <2Bd4g.21380$tN3.16246@newssvr27.news.prodigy.net>,
Edward Elliott <nobody@127.0.0.1> 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.
Received on Mon May 1 00:47:15 2006