如何关闭python "sh"库的打印结果

How to turn off printing result of python "sh" library

我正在使用 Python 开发服务,当我尝试使用 Python sh 库获取服务状态时,它将 return 结果像这样的变量:

import sh
status = str(sh.service('nginx','status'))
if 'active' in status:
    print('ready')

它工作正常,但是当我尝试获取 supervisor 服务的状态时,它会在终端中打印所有结果并破坏我的命令输出。

那么如何关闭终端打印的这个结果呢?

您需要 redirect 输出。

要么 /dev/null:

sh.service('nginx','status', _out='/dev/null')

StringIO 对象供您检查输出:

from io import StringIO

buffer = StringIO()
sh.service('nginx','status', _out=buffer)
output = buffer.getvalue()

使用 _err 重定向 stderr 输出。

它也将被处理(有助于避免在终端上打印):

try:
    ...
except shErrorReturnCode:
    ...