tengo este código:pitón subproceso ocultar la salida estándar y esperar a completar
def method_a(self):
command_line = 'somtoolbox GrowingSOM ' + som_prop_path
subprocess.Popen(shlex.split(command_line))
......
def method_b(self): .....
....
y me gusta que todo ve, method_a tiene un subproceso que se llama el programa somtoolbox. Pero este programa tiene una larga duración, y quiero ocultarlo. Probé:
subprocess.Popen(shlex.split(command_line), stdout=subprocess.PIPE)
pero regresó esta frase:
cat: record error: Broked Pipe
(esto es una traducción de la frase portugués: "cat: erro de gravação: Pipe quebrado") (soy de brasil)
Además, tengo otros métodos (como method_b allí), que se llaman después del método_a, y estos métodos se ejecutan antes de que el subproceso complete el proceso.
¿Cómo puedo ocultar el stdout en absoluto (y no lo quiero en cualquier lugar), y hacer que el otro código espere a que el subproceso termine la ejecución?
Obs: El somtoolbox es un programa java que proporciona la salida larga al terminal. intentado:
outputTuple = subprocess.Popen(shlex.split(command_line), stdout = subprocess.PIPE).communicate()
pero continua de regresar de salida a la cáscara. Ayuda!
No se esconde –
@Gabriel ¿Tal vez necesita redirigir stderr también? –
¡Funcionó! Muchas gracias! –