Нет вывода из подпроцесса.check_output()

#python #subprocess

#python #подпроцесс

Вопрос:

Я пытаюсь запустить следующий код на Python 2.7.5:

 output = subprocess.check_output(commandList)
print (len(output))
  

Мой список команд представляет собой список аргументов типа: [‘ls’, ‘-l’].

Но тогда я получаю, что длина вывода равна 0, даже если у меня очень длинная выходная строка. Однако check_output работает корректно, потому что я вижу результат процесса, запущенного в стандартном выводе (консоль).

Идеальным вариантом использования было бы запустить подпроцесс, скрыть стандартный вывод (ничего не видно в консоли), проанализировать выходную строку и извлечь некоторую соответствующую информацию.

Комментарии:

1. вы уверены, что эта строка, в которую вы ожидаете ее напечатать stdout ? Если вы ожидаете логи, они часто сбрасываются в stderr вместо этого… check_ouput по умолчанию собирает только stdin.

Ответ №1:

Предполагается, что это должно сработать, но возможно, что фактическая команда, которую вы запускаете (предположительно нет ls ), содержит ошибки и отправляет все свои выходные данные в stderr вместо stdout . Try

 output = subprocess.check_output(commandList, stderr=subprocess.STDOUT)