Это произошло из-за того, что утилита Java выдавала исключение, которое не кэшируется подпроцессом. Открыто
Однако исключение перехватывается subprocess.check_output
Обновленный код:
try:
output = subprocess.check_output(command, shell=True, stderr=subprocess.STDOUT, stdin=subprocess.PIPE)
except subprocess.CalledProcessError as exc:
print("Status : FAIL", exc.returncode, exc.output)
else:
print("Output of Resume cmd: \n{}\n".format(output))
file.write("Output of Resume cmd: \n{}\n".format(output) + "\n")
Вывод кода:
('Status : FAIL', -11, 'PID:37319\n')
('Status : FAIL', -11, 'PID:37320\n')
Следовательно, команда выдает исключение, кэшируется subprocess.check_output, но не subprocess.Popen
Извлечение из официальной страницы subprocess.check_output
Если код возврата был ненулевым, возникает CalledProcessError.У объекта CalledProcessError будет код возврата в атрибуте returncode и любые выходные данные в атрибуте output.