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()
Другие вопросы по тегам