如何在Python2.7中隐藏子进程的输出我在Ubuntu上使用eS匹克,并有一个Python2.7脚本,它可以打印并发出消息:import subprocess
text = 'Hello World.'print text
subprocess.call(['espeak', text])eS匹克会产生所需的声音,但是会使shell充满一些错误(ALSAlib.,没有套接字连接),所以我无法轻松地读取前面打印的内容。出口代码是0。不幸的是,没有文档化的选项来关闭它的冗长,所以我正在寻找一种方法,只在视觉上沉默它,并保持打开的外壳干净,以便进一步的交互。我该怎么做?
3 回答
鸿蒙传说
TA贡献1865条经验 获得超7个赞
#!/usr/bin/env python# -*- coding: utf-8 -*-from subprocess import Popen, PIPE, STDOUTtry: from subprocess import DEVNULL # py3kexcept ImportError: import os DEVNULL = open(os.devnull, 'wb')text = u"René Descartes"p = Popen(['espeak', '-b', '1'], stdin=PIPE, stdout=DEVNULL, stderr=STDOUT)p.communicate(text.encode('utf-8'))assert p.returncode == 0 # use appropriate for your program error handling here
森林海
TA贡献2011条经验 获得超2个赞
subprocess.check_output
import subprocesstry: subprocess.check_output(['espeak', text])except subprocess.CalledProcessError: # Do something
subprocess.check_output(["espeak", text], stderr=subprocess.STDOUT)
import osimport subprocesswith open(os.devnull, 'w') as FNULL: try: subprocess._check_call(['espeak', text], stdout=FNULL) except subprocess.CalledProcessError: # Do something
subprocess._check_call(['espeak', text], stdout=FNULL, stderr=FNULL)
添加回答
举报
0/150
提交
取消