【发布时间】:2016-08-23 01:33:26
【问题描述】:
我有一小部分代码:
stream = pyaudio.PyAudio().open(
format = pyaudio.PyAudio().get_format_from_width(1),
channels = 1,
rate = bitrate,
output = True
)
当我运行它时,它会产生几行控制台输出:
ALSA lib pcm_dsnoop.c:614:(snd_pcm_dsnoop_open) unable to open slave
ALSA lib pcm_dmix.c:1024:(snd_pcm_dmix_open) unable to open slave
ALSA lib pcm.c:2267:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.rear
ALSA lib pcm.c:2267:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.center_lfe
ALSA lib pcm.c:2267:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.side
ALSA lib pcm_dmix.c:1024:(snd_pcm_dmix_open) unable to open slave
Cannot connect to server socket err = No such file or directory
Cannot connect to server request channel
jack server is not running or cannot be started
如何更改围绕此特定函数调用的代码,以使上述表单的控制台输出不出现,同时不使其他代码的控制台输出消失?
我正在设想以上下文管理器的形式解决这个问题,可能有点像下面这样:
@contextlib.contextmanager
def silence():
# <insert magic to direct stdout and stderr to null>
yield
# <insert magic to direct stdout and stderr to console>
with silence():
stream = pyaudio.PyAudio().open(
format = pyaudio.PyAudio().get_format_from_width(1),
channels = 1,
rate = bitrate,
output = True
)
【问题讨论】:
标签: python stdout stderr pyaudio silent