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

发布于 2021-02-02 23:21:16

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

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

eSpeak产生所需的声音,但由于一些错误(ALSA lib ...,没有套接字连接)而使外壳混乱,因此我无法轻松读取之前打印的内容。退出代码为0。

不幸的是,没有记录的选项可以关闭它的冗长性,因此我正在寻找一种方法,仅在视觉上使其静音并保持打开的外壳干净以进行进一步的交互。

我怎样才能做到这一点?

关注者
0
被浏览
108
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

    将输出重定向到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")
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看