[EMAIL PROTECTED] wrote:
> Let's say I have this Python file called loop.py:
> 
> import sys
> print 'hi'
> sys.stdout.flush()
> while 1:
>     pass
> 
> And I want to call it from another Python process and read the value
> 'hi'.  How would I do it?
> 
> So far I have tried this:
> 
>>>> proc = subprocess.Popen('python 
>>>> /home/chiefinnovator/loop.py',shell=True,stdin=subprocess.PIPE,stdout=subprocess.PIPE)
>>>> proc.stdout.read()
> 

 From python documentation

`read([size])'
      Read at most SIZE bytes from the file (less if the read hits `EOF'
      before obtaining SIZE bytes).  If the SIZE argument is negative or
      omitted, read all data until `EOF' is reached.  The bytes are
      returned as a string object.  An empty string is returned when
      `EOF' is encountered immediately.  (For certain files, like ttys,
      it makes sense to continue reading after an `EOF' is hit.)  Note
      that this method may call the underlying C function `fread()' more
      than once in an effort to acquire as close to SIZE bytes as
      possible. Also note that when in non-blocking mode, less data than
      what was requested may be returned, even if no SIZE parameter was
      given.

  read call in your code is waiting for EOF, since the script never exits
  EOF is not reached.

  Change read code to

  proc.stdout.readline()

  or

  remove while 1 loop from loop.py.

HTH
Kolla
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to