声明:这是个标题党,如果你执意想用os.popen做到控制台输出重定向,这篇文章中并没有答案,如果你对os.popen没有那么强烈的执念,请继续看
前段时间写代码使用os.popen时,遇到一个问题:执行的命令有可能会运行失败,虽然在代码中增加了异常处理,但是对于功能的要求是,不能在控制台打印出来报错信息,附上使用os.popen的情况:
# -*- coding: utf-8 -*-
import os
if __name__ == '__main__':
CMD = "adb -H 1.2.3.5 devices" # ip未知,执行肯定会报错
prco = os.popen(CMD, mode="r", buffering=-1)
outputStr = str(prco.read())
print("output: " + outputStr)
控制台输出结果是这样的:
** Cannot start server on remote host
error: can't connect to 1.2.3.5:7305: cannot connect to 1.2.3.5:7305: 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。 (10060)
output: List of devices attached
可以看到前两行输出部署预期想要的,那要怎么才能不让命令中的stderr输出到控制台呢ÿ