如何在Python 2.7中隐藏子进程的输出

问题:

我在Ubuntu上使用eSpeak,并有一个Python 2.7脚本打印并说出一个消息:

import subprocess
text = 'Hello World.'
print text
subprocess.call(['espeak', text])

eSpeak产生所需的声音,但是将外壳与一些错误(ALSA lib …,没有插座连接)混合在一起,所以我不能轻易读取之前打印的内容。退出代码为0。
不幸的是,没有文档的选项关闭它的冗长度,所以我正在寻找一种方法,只有视觉上沉默它,并保持开放的外壳干净进一步的交互。
我该怎么做?

回答:

将输出重定向到DEVNULL:

import os
import subprocess

FNULL = open(os.devnull, 'w')
retcode = subprocess.call(['echo', 'foo'], stdout=FNULL, stderr=subprocess.STDOUT)

它运行这个shell命令是有效的:

retcode = os.system("echo 'foo' &> /dev/null")

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: How to hide output of subprocess in Python 2.7

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

− 2 = 1