3c273 wrote: > I was just trying to learn how to use .communicate() and all of the examples > I see have [0] after .communicate(). What is the significance of the [0]?
From the Python Library Reference (http://docs.python.org/lib/node239.html), you learn that the method communicate() from the subprocess.Popen() class returns a tuple containing the standard output as first item and the standard error of the child process as second item. So the [0] in the example is for selecting the first item of the tuple ... #### from subprocess import * p1 = Popen(["dmesg"], stdout=PIPE) p2 = Popen(["grep", "hda"], stdin=p1.stdout, stdout=PIPE) output = p2.communicate()[0] ### is equivalent to : from subprocess import * p1 = Popen(["dmesg"], stdout=PIPE) p2 = Popen(["grep", "hda"], stdin=p1.stdout, stdout=PIPE) output_and_error = p2.communicate() output = output_and_error[0] ### or : from subprocess import * p1 = Popen(["dmesg"], stdout=PIPE) output=Popen(["grep","hda"],stdin=p1.stdout,stdout=PIPE).communicate()[0] ### or : from subprocess import * p1 = Popen(["dmesg"], stdout=PIPE) p2 = Popen(["grep", "hda"], stdin=p1.stdout, stdout=PIPE) (output, stderror) = p2.communicate() I hope it was useful ... -- http://mail.python.org/mailman/listinfo/python-list