Python 隐藏子进程的shell输出。检查_output()
我正在使用检索有关我的无线连接的信息Python 隐藏子进程的shell输出。检查_output(),python,shell,subprocess,sh,Python,Shell,Subprocess,Sh,我正在使用检索有关我的无线连接的信息 In [4]: subprocess.check_output('iwconfig') eth0 no wireless extensions. lo no wireless extensions. Out[4]: 'wlan0 ...' 我得到了我想要的字符串,但我想从有关eth0和lo的信息中清除shell(请注意,这些行不在检查输出返回字符串中,它们在ipython的in[4]和Out[4]之间打印到shell) 我目前的
In [4]: subprocess.check_output('iwconfig')
eth0 no wireless extensions.
lo no wireless extensions.
Out[4]: 'wlan0 ...'
我得到了我想要的字符串,但我想从有关eth0
和lo
的信息中清除shell(请注意,这些行不在检查输出
返回字符串中,它们在ipython的in[4]
和Out[4]
之间打印到shell)
我目前的猜测是,这两行被视为警告,不会被check\u输出捕获。希望它们能输出到stderr,我尝试了一些变体
iwconfig > /dev/null 2>&1 # empties my wanted string
iwconfig 2 > /dev/null # throws an error
但到目前为止还没有成功
如何防止check_output
将任何内容输出到shell?如果希望stderr
作为您的stdout
:
subprocess.check_output('iwconfig', stderr=subprocess.STDOUT)
如果您只想删除您的标准
:
import os
subprocess.check_output('iwconfig', stderr=open(os.devnull, 'w'))