On 2/12/11 10:09:17, janedenone wrote:
I had tried
sys.stdin = open('/dev/tty', 'r')
That seems to work for me. This code:
import sys
if sys.version_info.major == 2:
input = raw_input
for tp in enumerate(sys.stdin):
print("%d: %s" % tp)
sys.stdin = open('/dev/tty', 'r')
answer = input('What is the carrying capacity of a swallow? ')
print("You answered: %s" % answer)
print("File descriptor is %d" % sys.stdin.fileno())
... does what I expect it to do in both Python 2.7 and Python 3.2.
but the actual solution is slightly more complicated. With your help
(and another round of Google searches), I found exactly what I was
looking for:
http://turambar.org/jarkko/stdin_input.php
Because raw_input() (input() in Python 3) reads from file descriptor
0, the solution is to copy this file descriptor elsewhere, and use a
file descriptor pointing to /dev/tty for the user input.
That's odd. For some reason, I can get away with a simple
sys.stdin = open('/dev/tty')
and raw_input will merrily read from file descriptor 3.
I'm using Pyhton 2.7.1 and 3.2 on MacOS/X 10.5.0.
What version are you using?
-- HansM
--
http://mail.python.org/mailman/listinfo/python-list