使用 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/中找不到任何内容
从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)