Подтвердить что ты не робот

Подавление вывода в подпроцессе python

Для следующей команды:

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)), но он не дал требуемых результатов. Как мне это сделать?

4b9b3361

Ответ 1

Вы можете использовать параметры stdout= и stderr= для 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, если вы не читаете из канала, может привести к блокировке вашей программы, если она генерирует много результатов.

Ответ 2

Что работало для меня, это добавить 2>/dev/null в конце команды.