J'ai ce code:python stdout cacher subprocess et attendre pour compléter
def method_a(self):
command_line = 'somtoolbox GrowingSOM ' + som_prop_path
subprocess.Popen(shlex.split(command_line))
......
def method_b(self): .....
....
et vous aime tous voir, method_a a un sous-processus qui appelle le programme somtoolbox. Mais ce programme a une longue sortie, et je veux le cacher. J'ai essayé:
subprocess.Popen(shlex.split(command_line), stdout=subprocess.PIPE)
Mais il est revenu cette phrase:
cat: record error: Broked Pipe
(ceci est une traduction de la phrase portugais: "chat: Erro de gravação: Tuyau quebrado") (je suis de Brésil)
En outre, j'ai d'autres méthodes (comme method_b), qui sont appelées après la méthode_a, et ces méthodes sont en cours d'exécution avant que le sous-processus ne termine le processus.
Comment est-ce que je peux cacher le stdout à tous (et ne le veux pas n'importe où), et faire l'autre code attendre que le sous-processus pour terminer l'exécution? Obs: Le somtoolbox est un programme java, qui donne la sortie longue au terminal. essayées:
outputTuple = subprocess.Popen(shlex.split(command_line), stdout = subprocess.PIPE).communicate()
mais continu de sortie de retour à la coque. Aide!
Il ne se cache pas –
@Gabriel Peut-être que vous devez également rediriger stderr? –
A travaillé! Merci beaucoup! –