Is there a simple way to exit a while loop on keystroke?

Hendrik van Rooyen mail at microcorp.co.za
Sat Sep 1 03:36:48 EDT 2007


"gsxg" <rhauff at gmail.com> wrote:

> I am new to python, and have written a simple program to read a port
> via telnet.  I would like it to run until any key is pressed.  Of
> course I wouldn't mind requiring a specific keystroke in the future,
> but I would think this is simpler for now.
> 
> I have used kbhit() and getch() many times in C, but I can't find
> anything similar in  Python.  I am using Linux also, so the msvcrt
> code isn't an option.  I have tried sys.stdin.read(), but that hangs
> UNTIL a key is pressed.

Unblock the stdin using the fcntl module. Then you get an IOError
if there is nothing.

def unblock(f):
    """Given file f , sets it unblock flag to true"""
    fcntl.fcntl(f.fileno(),fcntl.F_SETFL,os.O_NONBLOCK)

f is the file object you get from the open...

hth - Hendrik




More information about the Python-list mailing list