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

Reply via email to