On 07/06/2012 17:04, Julio Sergio wrote:
I'm trying to call an external process to filter some of my data, i.e., I'm
trying to pass some information to the called process, and have this information
back transformed. I started testing with the linux 'cat' command, in this way:


->>>  import subprocess as sp
->>>  p = sp.Popen(["cat"],stdin=sp.PIPE,stdout=sp.PIPE,close_fds=True)
->>>  (fi,fo) = (p.stdin, p.stdout)
->>>  fi.write("SOMETHING\n")
->>>  fi.flush()
->>>  fo.readline()
'SOMETHING\n'
->>>  fi.write("OTHER\n")
->>>  fi.flush()
->>>  fo.readline()
'OTHER\n'
->>>  fi.write("NEXT\n")
->>>  fi.flush()
->>>  fo.readline()
'NEXT\n'
->>>  fi.write("NEXT1\n")
->>>  fi.flush()
->>>  s = fo.readline()
->>>  s
'NEXT1\n'

Up to this point it worked as expected. However, when I tryied with the methods
that write and read several lines, apparently the process got stalled:

->>>  fi.writelines(["uno\n","dos\n","tres\n"])
->>>  fi.flush()
->>>  s = fo.readlines()
.
.
.

Do you have any comments on this?

I believe it's waiting for the end of the input, i.e. for the pipe to
close.

Have you tried calling fo.readline() 3 times instead?
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to