是否有“2> dev null”样式的方法来重定向*某些*消息,但不重定向其他特定消息?

问题描述 投票:0回答:1

运行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 linux stdout
1个回答
0
投票

在本例中,消息来自 Python 的标准库日志记录系统,可以通过比 shell 级 grep 更可靠的方式进行配置

python -c '
    import logging
    from piper.__main__ import main
    logging.getLogger("piper").setLevel(logging.WARNING)
    main()
'
© www.soinside.com 2019 - 2024. All rights reserved.