Python Glossary English

Python 3.0+subprocessфункция

subprocess.getstatusoutput()

вызов через оболочку

Выполняет строку-команду через оболочку и возвращает кортеж (код возврата, вывод); наследие модуля commands из Python 2.

Синтаксис

status, output = subprocess.getstatusoutput(cmd, *, encoding=None, errors=None)

Порядок в кортеже — сначала код, потом текст, и исключений при ошибке нет: проверять код надо самому. stderr слит с stdout, так что текст ошибки окажется в том же выводе. Строка идёт в оболочку (sh или cmd.exe), поэтому кавычки и переменные разбираются по-разному на разных ОС. Для нового кода предпочтительнее run() со списком аргументов — без оболочки и её ловушек.

Примеры

import subprocess, sys
cmd = f'"{sys.executable}" -c "print(1); raise SystemExit(3)"'
status, out = subprocess.getstatusoutput(cmd)
print(status, out)  # → 3 1
import subprocess
print(subprocess.getstatusoutput('no-such-program-xyz'))  # → ? (127, '/bin/sh: 1: no-such-program-xyz: not found') — текст и код зависят от оболочки

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности