#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)