Running a command line program and reading the result as it runs
Joseph L. Casale
jcasale at activenetwerx.com
Fri Aug 23 06:50:18 EDT 2013
> >> 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?
Try this:
p = subprocess.Popen(args, stdout=subprocess.PIPE)
for line in p.stdout:
print(line)
p.wait()
jlc
More information about the Python-list
mailing list