如何停止输出subprocess.Popen的输出?如果印刷很多,印刷有时会很慢。
答案 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 的垃圾。