您可以使用stdout=
andstderr=
参数来subprocess.call()
指向stdout
或stderr
指向您选择的文件描述符。所以也许是这样的:
import os
devnull = open(os.devnull, 'w')
subprocess.call(shlex.split(
'/usr/local/itms/bin/iTMSTransporter -m lookupMetadata '
'-apple_id %s -destination %s' % (self,apple_id, self.destination)),
stdout=devnull, stderr=devnull)
如果您不是从管道读取数据,则使用subprocess.PIPE
,如果它生成大量输出,可能会导致您的程序阻塞。
更新
正如@yanlend 在评论中提到的那样,更新的(3.x)版本的 Python 包括subprocess.DEVNULL
以更方便和可移植的方式解决这个问题。在这种情况下,代码将如下所示:
subprocess.call(shlex.split(
'/usr/local/itms/bin/iTMSTransporter -m lookupMetadata '
'-apple_id %s -destination %s' % (self,apple_id, self.destination)),
stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)