Running a command line program and reading the result as it runs

Ian Simcock Ian.Simcock at Internode.on.net
Thu Aug 22 01:51:10 EDT 2013


Greetings all.

I'm using Python 2.7 under Windows and am trying to run a command line 
program and process the programs output as it is running. A number of 
web searches have indicated that the following code would work.

import subprocess

p = subprocess.Popen("D:\Python\Python27\Scripts\pip.exe list -o",
                      stdout=subprocess.PIPE,
                      stderr=subprocess.STDOUT,
                      bufsize=1,
                      universal_newlines=True,
                      shell=False)
for line in p.stdout:
     print line

When I use this code I can see that the Popen works, any code between 
the Popen and the for will run straight away, but as soon as it gets to 
the for and tries to read p.stdout the code blocks until the command 
line program completes, then all of the lines are returned.

Does anyone know how to get the results of the program without it blocking?

Thanks,
Ian Simcock.



More information about the Python-list mailing list