2009/1/14 Damon Timm <[email protected]>:
> This works when I do have something coming via stdin ... but if I run
> the script without piping something first ... it just sits there (I
> assume, waiting for some stdin) ...
>
> How do I tell it: if there is no stdin, just move on?
This might work:
import select, sys
def isData():
return select.select([sys.stdin], [], [], 0) ==
([sys.stdin], [], [])
if isData():
print 'You typed:', sys.stdin.read()
else:
print 'Nothing to see here.'
I say "might" because it is OS-dependent, but I guess you are using unix/linux.
Source:
http://www.darkcoding.net/software/non-blocking-console-io-is-not-possible/
I found that by searching for "python stdin non-blocking". This is
because "blocking" is jargon for "waiting until something happens".
In this case, stdin.read() is blocking until it sees some data with an
EOF.
HTH!
--
John.
_______________________________________________
Tutor maillist - [email protected]
http://mail.python.org/mailman/listinfo/tutor