gpt4 book ai didi

python - 抑制python子进程调用中的输出

转载 作者:IT老高 更新时间:2023-10-28 21:49:35 26 4
gpt4 key购买 nike

对于以下命令:

subprocess.call(shlex.split(
"""/usr/local/itms/bin/iTMSTransporter -m lookupMetadata
-apple_id %s -destination %s"""%(self.apple_id, self.destination))

它将整个输出打印到终端窗口中。我将如何在这里抑制所有输出?我试过做subprocess.call(shlex.split(<command> > /dev/null 2&1 )),但它没有产生所需的结果。我该怎么做呢?

最佳答案

你可以使用stdout=stderr=参数subprocess.call()来直接stdoutstderr 到您选择的文件描述符。所以可能是这样的:

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)

关于python - 抑制python子进程调用中的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10251391/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com