抑制subprocess.Popen的输出

时间:2011-08-16 17:50:10

标签: python subprocess

如何停止输出subprocess.Popen的输出?如果印刷很多,印刷有时会很慢。

3 个答案:

答案 0 :(得分:22)

如果你想把它扔掉:

import subprocess
import os
with open(os.devnull, 'w') as fp:
    cmd = subprocess.Popen(("[command]",), stdout=fp)

如果您使用的是Python 2.5,则需要from __future__ import with_statement,或者只是不要使用with

答案 1 :(得分:16)

在Python 3.3+中,您可以使用subprocess.DEVNULL来抑制输出:

from subprocess import DEVNULL, STDOUT, check_call

check_call([cmd, arg1, arg2], stdout=DEVNULL, stderr=STDOUT)

如果您不想同时取消stderr=STDOUT,请移除stderr

答案 2 :(得分:0)

这也适用于我(Python 3.6、Ubuntu Linux 操作系统):

subprocess.Popen(cmd, shell=False, stdout=DEVNULL)

-这假设您想要非阻塞调用并且控制台中没有来自 cmd 的垃圾。