John Mechaniks wrote: > On Jul 14, 12:34 pm, Peter Otten <[EMAIL PROTECTED]> wrote: >> John Mechaniks wrote: >> > from subprocess import call >> > call(['ls', '-l']) >> >> > How do I get the result (not the exit status of the command) of "ls - >> > l" into a variable? >> >> output = subprocess.Popen(["ls", "-l"], >> stdout=subprocess.PIPE).stdout.read()
> What difference does the following code makes? What are the advantages > of the above method over this one? > output = subprocess.Popen(['ls', '-l'], > stdout=subprocess.PIPE).communicate()[0] Hm, I chose it because it looks cleaner. Looking into the source Popen.communicate() seems to do the following: output = p._fo_read_no_intr(p.stdout) p.wait() So there are two differences in this case - communicate() waits for the subprocess to terminate. - stdout.read() is retried if an EINTR occurs (Not sure when this would happen). > Also could someone show an example of using the optional input > argument for communicate() http://blog.doughellmann.com/2007/07/pymotw-subprocess.html I didn't read it myself, but Doug Hellmann's articles are usually quite good. Peter -- http://mail.python.org/mailman/listinfo/python-list