Some general questions about using "stdin","stdout"....

Discussion in 'Python' started by asdsd sir, Feb 16, 2006.

  1. asdsd sir

    asdsd sir Guest

    Hi!I'm new in Python and i'd like to ask some general questions about
    stdin,stdout...

    Firstly...

    if we type like something like :
    cat "file.txt"|python somefile.py

    #somefile.py
    import sys
    text=sys.stdin.read()


    ....then "sys.stdin.read()" will read from "cat"s stdout...
    However,if i type inside a program,something like....

    #someprog.py
    import sys
    print "hello"|sys.stdin.read()

    ......the screen hangs..why is that?isn't the same situation as "cat"?

    in addition to this...
    Why can't i "write" to the stdin?
    Isn't it being used as a file object like all the others?
    for example
    sys.stdin.close() or
    open('sys.stdin','w+') or
    sys.stdin.write("something") etc... don't work...

    At last,let's consider "sys.stdin.read(3)"
    If i type that,the program "waits" for me to type some characters,and then
    prints the first three...
    However,doesn't this action actually include a "writing" to stdin and then
    a "reading" from that?

    I'm really confused...
    Any help would be highly appreciated...
    Thanks a lot.

    _________________________________________________________________
    Free blogging with MSN Spaces http://spaces.msn.com/?mkt=nl-be
     
    asdsd sir, Feb 16, 2006
    #1
    1. Advertising

  2. asdsd sir wrote:

    > Hi!I'm new in Python and i'd like to ask some general questions about
    > stdin,stdout...
    >
    > Firstly...
    >
    > if we type like something like :
    > cat "file.txt"|python somefile.py
    >
    > #somefile.py
    > import sys
    > text=sys.stdin.read()
    >
    >
    > ...then "sys.stdin.read()" will read from "cat"s stdout...
    > However,if i type inside a program,something like....
    >
    > #someprog.py
    > import sys
    > print "hello"|sys.stdin.read()
    >
    > .....the screen hangs..why is that?isn't the same situation as "cat"?


    Obviously not... The stdin is a read-only file that you can read from the
    data that is passed via a pipe to your application. You did tha piping by
    using

    cat "file.txt" | python somefile.py

    That establihes the pipe between cat's stdout(!) and python's stdin. That's
    the reason that | is called "pipe" or "pipe-operator" in the SHELL(!)

    print "hello"|sys.stdin.read()

    OTH is inside python, and | is not the pipe-operator, but the binary
    or-operator. Consider this:

    >>> print 1 | 2

    3

    But:
    >>> print "hello" | "some other string"

    Traceback (most recent call last):
    File "<stdin>", line 1, in ?
    TypeError: unsupported operand type(s) for |: 'str' and 'str'


    So you don't write something to stdin by that. Instead it waits endlessly,
    trying to read something that is piped to it from the outside. But if that
    was the case, it would puke on you with the above error message.

    > in addition to this...
    > Why can't i "write" to the stdin?
    > Isn't it being used as a file object like all the others?
    > for example
    > sys.stdin.close() or
    > open('sys.stdin','w+') or
    > sys.stdin.write("something") etc... don't work...


    Because it is defined that way. I suggest you read up on unix piping to
    grasp the concepts behind it - python only follows these.


    Diez
     
    Diez B. Roggisch, Feb 16, 2006
    #2
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Harayasu
    Replies:
    3
    Views:
    594
    moongateclimber
    Aug 21, 2003
  2. Johnathan Doe

    peek at stdin, flush stdin

    Johnathan Doe, May 15, 2004, in forum: C Programming
    Replies:
    5
    Views:
    25,004
    Chatoyer
    May 17, 2013
  3. KimmoA
    Replies:
    66
    Views:
    1,242
    Richard Heathfield
    Sep 14, 2006
  4. Vinh Chuc

    Some General Questions about Ruby

    Vinh Chuc, Apr 4, 2007, in forum: Ruby
    Replies:
    7
    Views:
    115
    Vinh Chuc
    Apr 5, 2007
  5. Sarbjit singh
    Replies:
    2
    Views:
    380
    Nobody
    Jul 23, 2012
Loading...

Share This Page