title: Python: subprocess.popen: read each line of output
body: <p>I'm having trouble reading my subprocess output by line. The subprocess simply greps the contents of a file against another file. The output, which should be a two column file, prints to stdout just fine. But when I try to read each line, it reads each char followed by \n:</p>
  
  <pre><code>#!/usr/bin/python    
  
  import sys
  import getopt
  import os
  import subprocess
  from subprocess import Popen, PIPE, STDOUT
  
  inputfile = ''
  target = ''
  
  try:
          opts, args = getopt.getopt(sys.argv[1:],"s:t:",['servers=', 'target='])
  except getopt.GetoptError:
          print 'getopt failure: exit'
          sys.exit()
  
  for opt, arg in opts:
          if opt in ("-s", "--servers"):
                  inputfile = arg
          if opt in ("-t", "--target"):
                  boxwin = arg
  
  p1 = subprocess.Popen(["grep -f " + inputfile + " " + target + " | awk '{print $2, $1}'"], stdout=subprocess.PIPE, shell=True)
  
  output, error = p1.communicate()
  
  print output # this prints normally
  
  for line in output:
          print line # this prints each char of output followed by \n???
  </code></pre>
  
  <p>Expected output after reading by line:</p>
  
  <pre><code>abc 123
  def 456
  ghi 789
  </code></pre>
  
  <p>^^ this will print if I just "print output"</p>
  
  <p>Actual output when using for loop to read each line:</p>
  
  <pre><code>a
  b
  c
  
  1
  2
  3
  
  d
  e
  f
  </code></pre>
  
  <p>...</p>
  
  <p>Any ideas? Thanks.</p>