mam ten kod:pyton podproces ukryj stdout i czekać go do zakończenia
def method_a(self):
command_line = 'somtoolbox GrowingSOM ' + som_prop_path
subprocess.Popen(shlex.split(command_line))
......
def method_b(self): .....
....
i jak widzicie, method_a ma podproces że dzwoni program somtoolbox. Ale ten program ma długą historię i chcę go ukryć. Próbowałem:
subprocess.Popen(shlex.split(command_line), stdout=subprocess.PIPE)
Ale wrócił to zdanie:
cat: record error: Broked Pipe
(jest to tłumaczenie zdania Portugalskiej: "cat: erro de gravação: Rury quebrado") (jestem z brazylia)
Mam również inne metody (takie jak method_b tam), które są wywoływane po method_a, a metody tis działają przed podprocesem dokończenia procesu.
Jak mogę ukryć w ogóle stdout (i nie chcę go nigdzie) i sprawić, by drugi kod czekał na zakończenie podprocesu podprocesu?
Obs: somtoolbox to program java, który daje długie wyjście do terminala. Próbowano:
outputTuple = subprocess.Popen(shlex.split(command_line), stdout = subprocess.PIPE).communicate()
ale ciągłe powracanie do wyjścia. Pomoc!
To nie ukrywa się –
@Gabriel Być może potrzebujesz również przekierować stderr? –
Pracowałem! Dziękuję bardzo! –