Python перенаправляет вывод из команды LSF
Я пытаюсь запустить команду LSF, 'bjobs' внутри кода Python, используя подпроцесс, и я не могу получить вывод в переменную
Способы, которые я уже попробовал и потерпел неудачу, следующие:
proc = subprocess.Popen(['bjobs'],stdout=subprocess.PIPE)
print proc.stdout.read() ## Not working
stdout,stderr = subprocess.Popen(['bjobs'],stdout=subprocess.PIPE).communicate()
print stdout # prints empty line
Я не хочу перенаправлять это в физический файл.
Поэтому, пожалуйста, помогите мне найти способ напрямую записать их в переменную
1 ответ
Решение
Как указано в комментарии выше, сообщение "Не найдена незавершенная работа" выводится на stderr:
[~]$ bjobs > /dev/null
No unfinished job found
[~]$ bjobs >& /dev/null
[~]$
Если вы хотите все bjobs
Вывод: вы должны перенаправить подпроцесс stderr в stdout:
proc = subprocess.Popen(["bjobs"],stdout=subprocess.PIPE,stderr=subprocess.STDOUT)
print proc.stdout.read()