运行Linux。我编写了一个脚本,调用名为“Piper”的本地 TTS 引擎。该脚本运行良好,并向控制台输出两种类型的消息 - Piper 传递的有关 TTS 过程的信息和我的文本提示。我不需要显示 TTS 信息,但需要显示文本提示。在下面的输出示例中,文本提示为“****>”
Playing raw data 'stdin' : Signed 16 bit Little Endian, Rate 22050 Hz, Mono
[2024-05-09 21:05:21.214] [piper] [info] Loaded voice in 0.438713789 second(s)
[2024-05-09 21:05:21.215] [piper] [info] Initialized piper
[2024-05-09 21:05:21.867] [piper] [info] Waiting for audio to finish playing...
[2024-05-09 21:05:21.867] [piper] [info] Real-time factor: 0.17096870659688937
(infer=0.6470913549999999 sec, audio=3.7848526077097504 sec)
[2024-05-09 21:05:21.867] [piper] [info] Terminated piper
****>
我希望所有带时间戳的数据都转到 2> dev null,但允许显示我的脚本提示 ***>。运行“python script.py 2> dev null”会将 ****> 提示符以及其他数据清空。有没有一种简单的方法来区分输出并相应地重定向?
在本例中,消息来自 Python 的标准库日志记录系统,可以通过比 shell 级 grep 更可靠的方式进行配置:
python -c '
import logging
from piper.__main__ import main
logging.getLogger("piper").setLevel(logging.WARNING)
main()
'