假设这样的次要程序可以播放声音
#!/usr/bin/python3
from pydub import AudioSegment
from pydub.playback import play
bell_sound = AudioSegment.from_wav("/home/me/Music/audio/bell.wav")
play(bell_sound)
运行它后,终端会有多行支柱
In [8]: run report_time_example.py
Input #0, wav, from '/tmp/tmpsc7u87_e.wav': 0KB sq= 0B f=0/0
Duration: 00:00:01.62, bitrate: 176 kb/s
Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 11025 Hz, 1 channels, s16, 176 kb/s
1.43 M-A: 0.000 fd= 0 aq= 0KB vq= 0KB sq= 0B f=0/0
手动将输出重定向到/ dev / null
!python report_time_example.py &> /dev/null
如何在python代码体内完成这项工作。
答案 0 :(得分:3)
The contextlib
module为此提供了context managers to redirect stdout
和stderr
:
import contextlib
import os
with open(os.devnull, 'w') as null, \
contextlib.redirect_stdout(null), contextlib.redirect_stderr(null):
bell_sound = AudioSegment.from_wav("/home/me/Music/audio/bell.wav")
play(bell_sound)
在with
块中,stdout
和stderr
被重定向;退出该块后,将恢复原始句柄。
注意:redirect_stdout
是在3.4中引入的,而redirect_stderr
是在3.5中引入的;如果您仍使用2.7或类似版本,则唯一的选择是手动重新分配sys.stdout
/ sys.stderr
,或使用os.dup2
替换基础文件描述符,但是我建议您使用Modern首先使用Python。