Ich habe diesen Code:Python subprocess verstecken stdout und es warten zu vervollständigen
def method_a(self):
command_line = 'somtoolbox GrowingSOM ' + som_prop_path
subprocess.Popen(shlex.split(command_line))
......
def method_b(self): .....
....
und wie Sie alle sehen, hat method_a einen Unterprozess, der das somtoolbox Programm aufruft. Aber dieses Programm hat eine lange Zeit, und ich möchte es verstecken. Ich habe versucht:
subprocess.Popen(shlex.split(command_line), stdout=subprocess.PIPE)
Aber es kehrte diesen Satz:
cat: record error: Broked Pipe
(Dies ist eine Übersetzung des portugiesischen Satz: "Katze: erro de gravação: Rohr quebrado") (Ich bin aus brasilien)
Auch ich habe andere Methoden (wie method_b dort), die nach der Methode_a aufgerufen werden, und diese Methoden werden ausgeführt, bevor der Subprozess den Prozess abschließen.
Wie kann ich das stdout überhaupt verstecken (und will es nirgendwohin), und den anderen Code warten lassen, bis der Unterprozess die Ausführung beendet?
Obs: Die Somtoolbox ist ein Java-Programm, das dem Terminal die lange Ausgabe gibt. versucht:
outputTuple = subprocess.Popen(shlex.split(command_line), stdout = subprocess.PIPE).communicate()
aber kontinuierliche Ausgabe an die Shell zurückkehrt. Hilfe!
Es versteckt sich nicht –
@Gabriel Vielleicht müssen Sie stderr auch umleiten? –
Arbeitete! Ich danke dir sehr! –