subprocess.Popen is a class, and as such it returns an object which can do a lot of stuff besides just reading the output.

What you want to do here is using it's communicate() method as such:

output, errors = ping.communicate()


Also, there is a quicker way, I think from version 2.7 forward: use the shortcut
output = subprocess.check_output("your command here")

Always check latest documentation for your python version too
http://docs.python.org/library/subprocess.html

Nick

On 07/08/2010 04:04 PM, Paul VanGundy wrote:
Hi All,

I'm trying to get data from subprocess.Popen. To be specific, I am
trying to read a ping echo and take the output and assign it to a
variable like below:

ping = subprocess.Popen("ping -c 5 %s" % (server),
stdout=subprocess.PIPE, shell=True)

However, when I run the command the output that gets assigned to my ping
variable is something along the lines of '<subprocess.Popen object at
0x9524bec>' and am not returned to>>>  prompt. I know that is the proper
output but I need to be able to capture the ping replies and assign
those to a variable. I tried adding a \r and \n at the end of my cmd.
Any help would be greatly appreciated. I'm open to improvements,
different ways of doing it and corrections. :) If more info is needed
let me know. Thanks.

/paul
_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor


_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to