隐藏subprocess.check_output()的shell输出

时间:2014-10-09 11:19:56

标签: python shell subprocess sh

我正在使用

检索有关我的无线连接的信息
In [4]: subprocess.check_output('iwconfig')
eth0      no wireless extensions.

lo        no wireless extensions.

Out[4]: 'wlan0 ...'

我得到了我想要的字符串,但是我想从有关eth0lo的信息中清除shell(注意这些行不在check_ouput返回字符串中,它们在ipython的In [4]Out [4]之间打印到shell。

我目前的猜测是,这两行被视为警告,并未被check_output捕获。希望他们输出到stderr我在

上尝试了一些变化
iwconfig > /dev/null 2>&1  # empties my wanted string
iwconfig 2 > /dev/null     # throws an error

但到目前为止没有成功。

如何阻止check_output向shell输出任何内容?

1 个答案:

答案 0 :(得分:3)

如果您希望将stderr作为stdout

subprocess.check_output('iwconfig', stderr=subprocess.STDOUT)

如果您想要的只是消灭stderr

import os
subprocess.check_output('iwconfig', stderr=open(os.devnull, 'w'))