我正在使用PyAudio来录制麦克风的输入.
由于音频录制对我来说很好,我应该尝试简单地抑制其错误消息吗?还是有办法解决它们?
ALSA lib pcm.c:2212:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.rear
ALSA lib pcm.c:2212:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.center_lfe
ALSA lib pcm.c:2212:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.side
ALSA lib audio/pcm_bluetooth.c:1613:(audioservice_expect) BT_GET_CAPABILITIES failed : Input/output error(5)
ALSA lib audio/pcm_bluetooth.c:1613:(audioservice_expect) BT_GET_CAPABILITIES failed : Input/output error(5)
ALSA lib audio/pcm_bluetooth.c:1613:(audioservice_expect) BT_GET_CAPABILITIES failed : Input/output error(5)
ALSA lib audio/pcm_bluetooth.c:1613:(audioservice_expect) BT_GET_CAPABILITIES failed : Input/output error(5)
ALSA lib pcm_dmix.c:957:(snd_pcm_dmix_open) The dmix plugin supports only playback stream
ALSA lib pcm_dmix.c:1018:(snd_pcm_dmix_open) unable to open slave
Cannot connect to server socket err = No such file or …Run Code Online (Sandbox Code Playgroud) 我想抑制运行可执行文件的函数产生的所有终端输出。
我试图通过使用每次调用函数时临时重新定义 stdout 和 stderr 的上下文管理器来抑制 Python 函数的输出。这会抑制print函数调用产生的终端输出,但当函数调用产生终端输出的可执行文件时,它似乎不起作用。
那么,如何抑制 Python 函数调用的可执行文件的输出呢?
我的代码如下。我已经包含了一个示例函数,该函数调用ls试图说明我想要抑制的终端输出类型(尽管我正在处理的函数是不同的)。
#!/usr/bin/env python
import os
import subprocess
import sys
def main():
print("hello")
with silence():
print("there")
print("world")
with silence():
engage_command(command = "ls")
class silence(object):
def __init__(
self,
stdout = None,
stderr = None
):
if stdout == None and stderr == None:
devnull = open(os.devnull, "w")
stdout = devnull
stderr = devnull
self._stdout = stdout or sys.stdout
self._stderr = stderr or sys.stderr
def __enter__(
self
): …Run Code Online (Sandbox Code Playgroud)