我有这段代码:
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
这是对葡萄牙语句子的翻译:“cat: erro de gravação: Pipe quebrado”(我来自巴西)。
此外,我还有其他方法(例如 method_b),它们在 method_a 之后被调用,并且在子进程完成处理之前运行。
我该如何完全隐藏 stdout(不想让它出现在任何地方),并使其他代码等待子进程执行完成?
注:somtoolbox 是一个 Java 程序,会向终端输出大量内容。
尝试过:
outputTuple = subprocess.Popen(shlex.split(command_line), stdout = subprocess.PIPE).communicate()
但是持续返回输出到shell。 帮帮我!
subprocess.DEVNULL
,而不是open('/dev/null', 'w')
。 - Mark Amery