Mike Meyer <[EMAIL PROTECTED]> writes: > Steven Bethard <[EMAIL PROTECTED]> writes: > > > Amir Dekel wrote: > >> What I need from the program is to wait for a single character > >> input, something like while(getchar()) in C. All those Python > >> modules don't make much sence to me... > > > > sys.stdin.read(1) > > That doesn't do what he wants, because it doesn't return until you hit > a newline.
Well, but that's true as well for getchar() (at least in many cases of interactive input and line buffering), so in that respect I do think it's a fairly direct replacement, depending on how the OP was going to use getchar() in the application. For example, compare: with: #include <stdio.h> >>> import sys >>> while 1: main() ... c = sys.stdin.read(1) { ... print ord(c), while (1) { ... int ch = getchar(); printf("%d ",ch); } } When run, both produce (at least for me): 0123456789 (hit Enter here) 48 49 50 51 52 53 54 55 56 57 10 under both Unix (at least FreeBSD/Linux in my quick tests) and Windows (whether MSVC or Cygwin/gcc). (I don't include any output buffer flushing, since it shouldn't be needed on an interactive terminal, but you could add that to ensure that it isn't the output part that is being buffered - I did try it just to be sure on the Unix side) > The answer is system dependent. Or you can use massive overkill and > get curses, but if you're on windows you'll have to use a third party > curses package, and maybe wrap it If you want to guarantee you'll get the next console character without any waiting under Windows there's an msvcrt module that contains functions like kbhit() and getch[e] that would probably serve. -- David -- http://mail.python.org/mailman/listinfo/python-list