subprocess.Popen - file like object from stdout=PIPE

Clovis Fabricio nosklo at gmail.com
Wed Feb 4 07:06:58 EST 2009


2009/2/4 Helmut Jarausch <jarausch at skynet.be>:
> using e.g.
> import subprocess
> Package='app-arch/lzma-utils'
> EQ=subprocess.Popen(['/usr/bin/equery','depends',Package],stdout=subprocess.PIPE)
> EQ_output= EQ.communicate()[0]
> EQ_output is a string containing multiple lines.
> I'd prefer a file-like object, e.g. EQ_OUT
> so that I can loop over the lines of it like

EQ.stdout is the filelike object you're looking for.
communicate() grabs entire output at once so don't use it.

import subprocess
Package = 'app-arch/lzma-utils'
EQ = subprocess.Popen(['/usr/bin/equery', 'depends', Package],
stdout=subprocess.PIPE)
for line in EQ.stdout:
    do_stuff_with(line)



More information about the Python-list mailing list