子进程输出的抑制
当使用Python的子进程库调用外部程序时,它们的控制台输出可能会变得很麻烦,特别是对于像这样的详细应用程序电子说话。当 eSpeak 与预期音频一起发出诊断消息时,就会出现此问题,从而使 shell 变得混乱并阻碍后续交互。
为了解决此问题,我们可以采用一种称为输出重定向的技术。在 Python >= 3.3 中,DEVNULL 设备可用于将标准输出和错误流重定向到空目标,从而有效地静默它们:
import os import subprocess retcode = subprocess.call(['echo', 'foo'], stdout=subprocess.DEVNULL, stderr=subprocess.STDOUT)
对于 Python
FNULL = open(os.devnull, 'w') retcode = subprocess.call(['echo', 'foo'], stdout=FNULL, stderr=subprocess.STDOUT)
3.3,包括 2.7,可以使用以下方法:
retcode = os.system("echo 'foo' > /dev/null")
此方法相当于运行以下 shell 命令:
此技术可确保 eSpeak 中不需要的输出被抑制,使外壳保持干净并准备好进行进一步的用户交互。以上是如何在 Python 中抑制子进程输出?的详细内容。更多信息请关注PHP中文网其他相关文章!