Как указано в документации для subprocess.Popen , .returncode
хранит код возврата дочернего процесса. После запуска вашего кода я вижу этот вывод:
ania@blabla:~$ python3 test.py
None
ania@blabla:~$
[Errno 32] Broken pipe
Повторная проверка вышеупомянутых документов:
Значение None
указывает, что процесс еще не завершен.
Итак, давайте изменим ваш код, чтобы дождаться завершения дочернего процесса (я использую Python 3):
import subprocess
cmd='aws s3 ls'
push=subprocess.Popen(cmd, shell=True, stdout = subprocess.PIPE)
push.wait() # the new line
print(push.returncode)
Теперь в выводе я получаю статус выхода 0:
ania@blabla:~$ python3 test.py
0
Это совет по поводу проблемы с модулем subprocess
, но меня беспокоит, почему вы не хотите использовать модуль boto3
, который специально написан для отправки вызовов API в AWS из Python. Я не рекомендую вам использовать subprocess
для отправки этих запросов и переключиться на boto3
, если это возможно.