у меня есть этот код:питон подпроцесс скрыть стандартный вывод и ждать его, чтобы закончить
def method_a(self):
command_line = 'somtoolbox GrowingSOM ' + som_prop_path
subprocess.Popen(shlex.split(command_line))
......
def method_b(self): .....
....
и как вы все видите, method_a имеет подпроцесс, который звонит программу somtoolbox. Но у этой программы есть длинный stdout, и я хочу скрыть это. Я пробовал:
subprocess.Popen(shlex.split(command_line), stdout=subprocess.PIPE)
Но он вернулся это предложение:
cat: record error: Broked Pipe
(это перевод португальского предложения: "кошка: Эрро де gravação: Труба quebrado") (я из brazil)
Кроме того, у меня есть другие методы (например method_b), которые вызывается после метода method_a, а tis-методы выполняются до того, как подпроцесс завершит процесс.
Как я могу скрыть stdout вообще (и не хочу его нигде), и заставить другой код ждать, пока подпроцесс завершит выполнение?
Obs: Somtoolbox представляет собой программу java, которая дает длинный вывод на терминал. Пробовал:
outputTuple = subprocess.Popen(shlex.split(command_line), stdout = subprocess.PIPE).communicate()
но непрерывное возвращение выхода к корпусу. Помощь!
Это не скрытие –
@Gabriel Возможно, вам нужно перенаправить stderr тоже? –
Работал! Спасибо огромное! –