我在 Ubuntu 上使用 eSpeak,并且有一个 Python 2.7 脚本,可以打印并说出一条消息:
import subprocess
text = 'Hello World.'
print text
subprocess.call(['espeak', text])
eSpeak 会产生所需的声音,但会因为一些错误(ALSA lib...,没有套接字连接)而使外壳困惑,因此我无法轻松阅读之前打印的内容。退出代码为 0。
不幸的是,没有记录的选项可以关闭它的冗长,所以我正在寻找一种方法来仅在视觉上使其静音并保持打开的外壳清洁以进行进一步的交互。
我该怎么做?
最佳答案
对于 python >= 3.3,将输出重定向到 DEVNULL:
import os
import subprocess
retcode = subprocess.call(['echo', 'foo'],
stdout=subprocess.DEVNULL,
stderr=subprocess.STDOUT)
对于python <3.3,包括2.7使用:
FNULL = open(os.devnull, 'w')
retcode = subprocess.call(['echo', 'foo'],
stdout=FNULL,
stderr=subprocess.STDOUT)
实际上和运行这个 shell 命令是一样的:
retcode = os.system("echo 'foo' &> /dev/null")
关于python - 如何隐藏子进程的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11269575/