Python: sous-processus.popen: lire chaque ligne de sortie

Je vais avoir de la difficulté à la lecture de mon sous-processus de sortie par ligne. Le sous-processus simplement grep le contenu d'un fichier par rapport à un autre fichier. La sortie, qui devrait être l'un des deux fichiers en colonne, imprime sur la sortie standard l'amende juste. Mais lorsque je tente de lire chaque ligne, il lit chaque char suivi par \n:

#!/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???

Sortie attendue après la lecture en ligne:

abc 123
def 456
ghi 789

^^ ce sera imprimée si j'ai juste "imprimer"

De sortie réelle lors de l'utilisation de la boucle pour lire chaque ligne:

a
b
c

1
2
3

d
e
f

...

Des idées? Merci.

OriginalL'auteur corneria | 2014-01-29