是否可以抑制 sh 模块的输出?

Joe*_*ggs 2 python

使用 python sh 模块时,模块本身有输出,例如正在运行的命令的状态等。是否可以抑制它?我不是指正在执行的命令的输出,而是指模块执行时打印的内容。

例如,如果脚本包含:

import pip
pip.main(['install', "sh"])

import sh

cmdArgs = ["-lrt","/tmp"]
sh.ls(cmdArgs)
Run Code Online (Sandbox Code Playgroud)

当脚本运行时,输出如下:

<Command '/bin/ls -lrt /tmp'>: starting process
<Command '/bin/ls -lrt /tmp', pid 22235>: process started
<Command '/bin/ls -lrt /tmp', pid 22235>: process completed

Run Code Online (Sandbox Code Playgroud)

我宁愿没有输出。我在http://amoffat.github.io/sh/中找不到任何内容

iva*_*eev 5

从https://github.com/amoffat/sh/blob/master/sh.py#L754 可以看出(通过搜索源代码找到<Command,然后查看对生成该字符串的函数的引用),这些是logging带有 level 的消息INFO,因此如果您使用logging.

因此,可以使用标准logging机制将它们静音,如如何禁用来自请求库的日志消息?:

# sh uses a wrapper over logging.Logger, its logger names are "sh.<smth>"
# see sh.Logger.__init__ : https://github.com/amoffat/sh/blob/master/sh.py#L608
logging.getLogger("sh").setLevel(logging.WARNING)
Run Code Online (Sandbox Code Playgroud)