代码之家  ›  专栏  ›  技术社区  ›  mortymacs

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

  •  1
  • mortymacs  · 技术社区  · 9 年前

    我正在使用Python处理服务,当我尝试使用Python获取服务的状态时 sh 库中,它将返回如下变量中的结果:

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

    它工作正常,但当我试图获得 supervisor 服务它将打印终端中的所有结果,并销毁我的命令输出。

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

    2 回复  |  直到 9 年前
        1
  •  3
  •   Martijn Pieters    9 年前

    你需要 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输出。

        2
  •  0
  •   mortymacs    9 年前

    此外,它将由以下人员处理(有助于避免在终端上打印):

    try:
        ...
    except shErrorReturnCode:
        ...
    
    推荐文章