On Nov 18, 6:20 pm, noydb <noyd...@gmail.com> wrote: > On Nov 18, 5:54 pm, noydb <noyd...@gmail.com> wrote: > > > > > > > On Nov 18, 5:22 pm, Tim Harig <user...@ilthio.net> wrote: > > > > On 2010-11-18, noydb <jenn.du...@gmail.com> wrote: > > > > > import subprocess > > > > pig = subprocess.Popen(["C:\Halls\hallbig2.exe"], > > > > stdin=subprocess.PIPE, stdout=subprocess.PIPE) > > > > result = pig.communicate(input='C:\Halls\Input\Ea39j.txt')[-1] #I need > > > > to capture the, what I think is the, last output > > > > From the subprocess documentation: > > > > [62]communicate() returns a tuple (stdoutdata, stderrdata). > > > Note that if you want to send data to the process's stdin, > > > you need to create the Popen object with stdin=PIPE. Similarly, > > > to get anything other than None in the result tuple, you need > > > to give stdout=PIPE and/or stderr=PIPE too. > > > > By using index [-1] you are accessing the processes stderr stream. I am > > > not really sure why you changed it. It doesn't give you the last output. > > > Index 0 gives you *all* of stdout and index 1 gives you *all* of stderr, > > > period. If you wish to further disect the output to get say the last > > > line, > > > then you will need to parse it separately. > > > Okay, I see now. I did run it to start with 0 -- still same result no > > matter if 0 or -1. > > So, what is result (stdout, using [0]) in this case? (yes, i know I > > sound dumb - programming is not my background, obviously). A list, > > tuple??? How do you access stdout (or is it stdoutdata?) results? I > > have tried, get errors with all attempts. The exe gui returns several > > statistical values uopn inputing a text file (containing numerous > > lines of <value> <frequency>) and clicking compute - I want just one > > of the values. > > > > > print result > > > > print pig.returncode > > > >>> None > > > >>> 0 > > > > > So the tuple is empty. ?? The exe executes fine and returns output in > > > > th exe tool itself. The python script seems to execute fine, no > > > > errors, '...returned exit code 0'. Any ideas/suggestions? > > > > No the tuple contains two items (stdout, stderr). The first is what the > > > program printed to its stdout stream (which is most likely the output you > > > see if you run the command at a terminal/console). The second is what it > > > printed to its > > > stderr stream which is a channel used for out of band data such as error > > > or > > > status messages. In this case, it is None, because you did open stderr > > > as a > > > subprocess.PIPE.- Hide quoted text - > > > - Show quoted text -- Hide quoted text - > > > - Show quoted text - > > stdout is a file object- Hide quoted text - > > - Show quoted text -
if I do >>> print pig.communicate() ('', None) Doesn't that mean it is empty? -- http://mail.python.org/mailman/listinfo/python-list