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