在subprocess.check_output()中抑制stderr

Naf*_*aly 28 python subprocess python-2.7

我试图找到一种方法来忽略stderr流(类似于2> /dev/null):

output = subprocess.check_output("netstat -nptl".split())
Run Code Online (Sandbox Code Playgroud)

我应该在上面的命令中添加什么来实现呢?

Mar*_*ers 42

只需告诉subprocess您重定向它:

import os
import subprocess

with open(os.devnull, 'w') as devnull:
    output = subprocess.check_output("netstat -nptl".split(), stderr=devnull)
Run Code Online (Sandbox Code Playgroud)

请注意,Python 3添加了一个subprocess.DEVNULL对象,您无需自己打开它.

  • 从 python 3.5 开始,您还有“subprocess.run()”,它应该用于较新的代码。`output = subprocess.run(check=True, stdout=subprocess.PIPE, stderr=subprocess.DEVNULL).stdout` (2认同)