read sys.stdin, then raw_input

Fredrik Lundh fredrik at pythonware.com
Thu Mar 2 07:08:06 EST 2006


Rory Campbell-Lange wrote:

> To clarify, how can I get a normal terminal prompt for raw_input to
> enable me to insert a value into variable 'sel'?
>
> The program wants to keep reading from the piped file, it seems.
>
> Rory
>
> On 01/03/06, Rory Campbell-Lange (rory at campbell-lange.net) wrote:
> > I'm stumped. I'm piping some content to a python program, but then want
> > the python program to prompt me for an answer. It goes on reading
> > the pipe and gives a "EOFError: EOF when reading a line".
> >
> > eg:
> >     #!/usr/bin/python
> >
> >     import sys
> >     text = sys.stdin.read()
> >     sel = raw_input('Selection? : ')
> >
> > Selection? : Traceback (most recent call last):
> >   File "/tmp/z.py", line 5, in ?
> >     sel = raw_input('Selection? : ')
> > EOFError: EOF when reading a line
> >
> > Advice much appreciated.

since there's only one input channel for a program (stdin), and raw_input
reads from that channel, I don't think there's a portable way to do this.

on unixoid systems, something like this could work:

    import sys

    text = sys.stdin.read()

    # rebind sys.stdin to my tty
    sys.stdin = open("/dev/tty")
    sel = raw_input("Selection? : ")

</F>






More information about the Python-list mailing list