Ich habe Probleme beim Lesen meiner Subprozess-Ausgabe von Zeile. Der Unterprozess greppt einfach den Inhalt einer Datei gegen eine andere Datei. Die Ausgabe, bei der es sich um eine zweispaltige Datei handeln sollte, wird in stdout gedruckt. Aber wenn ich versuche, jede Zeile zu lesen, liest sie jeweils von \ gefolgt char n:Python: subprocess.popen: Lesen Sie jede Zeile der Ausgabe
#!/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???
Erwarteter Ausgabe nach Zeile zu lesen:
abc 123
def 456
ghi 789
^^ das wird gedruckt, wenn ich nur „Druckausgabe "
Tatsächlicher Ausgang, wenn für jede Zeile Schleife zu lesen:
a
b
c
1
2
3
d
e
f
...
Irgendwelche Ideen? Vielen Dank.
Das hat es getan. Vielen Dank! Wird in Kürze angenommen. – corneria