Это совершенно нормально , потому что команда, которую вы запустили, выдает ненулевой код завершения.Это означает, что команда, которую вы выполнили, сигнализирует о том, что что-то может быть не так.
См. Документацию subprocess.check_output()
:
Если код возврата отличен от нуля, возникает ошибка CalledProcessError.
и
Это эквивалентно:
run(..., check=True, stdout=PIPE).stdout
, где флаг check=True
указывает run()
вызвать исключение, когда return_value
не 0
:
Если проверка верна и процесс завершается с ненулевым кодом выхода, будет сгенерировано исключение CalledProcessError
.
Другая функция, которую вы использовали, subprocess.call()
, не устанавливает check=True
:
Запустите команду, описанную args
.Дождитесь завершения команды, затем верните атрибут returncode
.
Это эквивалентно:
run(...).returncode
Так что либо не use check_output()
, либо перехватите сгенерированное исключение, либо исправьте команду, которую вы выполняете.То, что call()
сработало, не означает, что процесс действительно дал успешный результат.
Например, вы можете использовать subprocess.run()
напрямую:
proc = subprocess.run(
command5, shell=True, text=True
stdout=subprocess.PIPE, stderr=subprococess.PIPE)
if proc.returncode:
print(f'Issue reported, exit code {proc.returncode}, stderr:')
print(proc.stderr)
else:
print(proc.stdout)