Ich versuche eine Funktion zum Erstellen einer Shell-Pipeline in einer Schleife zu schreiben, die ihre Befehlsparameter aus einer Liste erhält und das letzte stdout an die neue stdin leitet. In der und der Befehlsliste möchte ich die Kommunikationsmethode auf dem Popen-Objekt aufrufen, um die Ausgabe zu erhalten.Python popen pipe in Schleife
Der Ausgang ist immer leer. Was mache ich falsch?
Siehe folgendes Beispiel:
lstCmd = ["tasklist", "grep %SESSIONNAME%", "grep %s" % (strAutName)]
lstPopen = [subprocess.Popen(lstCmd[0].split(), stdout=subprocess.PIPE)]
for i in range(len(lstCmd) - 1):
lstPopen.append(subprocess.Popen(lstCmd[i + 1].split(), stdin=lstPopen[i].stdout, stdout=subprocess.PIPE))
lstPopen[i].stdout.close()
strProcessInfo = lstPopen[-1].communicate()[0]
ich mit weiteren Unix-Funktionen auf einer Windows-Umgebung bin. Nach Befehl funktioniert auf meiner Windows-Befehlszeile und soll strProcessInfo geschrieben werden:
C:\>tasklist | grep %SESSIONNAME% | grep tasklist
tasklist.exe 18112 Console 1 5.948 K
Ich ersetzte nur ** Konsole ** von ** os.environ ["SESSIONNAME"]) ** aber es hat gut funktioniert. Vielen Dank! –