如何调用系统命令而不打印任何东西?

时间:2014-01-08 09:07:58

标签: python

运行以下python代码段 -

from subprocess import call
call(['zip', '-d', 'ya', 'yo'])

打印此输出 -

    zip warning: ya.zip not found or empty
    zip warning: name not matched: yo

zip error: Nothing to do! (ya.zip)
12

如何抑制输出或将其重定向到缓冲区?

3 个答案:

答案 0 :(得分:2)

您可以使用the stdout and stdin keyword argumentscall将流重定向到(除其他外)文件对象。所以你可以写:

import os
from subprocess import call

with open(os.devnull) as devnull:
    call(['zip', '-d', 'ya', 'yo'], stdout=devnull, stderr=devnull)

在python 3.3或更高版本中,您可以直接使用subprocess.DEVNULL执行此操作:

call(['zip', '-d', 'ya', 'yo'], stdout=subprocess.DEVNULL, stdin=subprocess.DEVNULL)

答案 1 :(得分:0)

将输出重定向到/dev/null,e。 G。使用call

的shell功能
call('zip -d ya yo > /dev/null 2>&1', shell=True)

答案 2 :(得分:0)

使用 subprocess.check_output 函数 - 几乎相同的接口,返回命令输出