Python Glossary English

Python 3.0+subprocessфункция

subprocess.getoutput()

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

Выполняет строку-команду через системную оболочку и возвращает её вывод (stdout вместе с stderr) одной строкой.

Синтаксис

subprocess.getoutput(cmd, *, encoding=None, errors=None)

Код возврата отбрасывается: упавшая команда вернёт текст ошибки как обычный результат, и отличить его нечем — для этого есть getstatusoutput(). Команда исполняется оболочкой (sh на Unix, cmd.exe на Windows), поэтому синтаксис разный, а подставленный ввод пользователя — дыра для инъекции. Завершающий перевод строки срезается, а вывод декодируется кодировкой локали (с 3.15 — UTF-8), если не передан encoding.

Примеры

import subprocess, sys
# двойные кавычки понимают и sh, и cmd.exe
cmd = f'"{sys.executable}" -c "print(42)"'
print(repr(subprocess.getoutput(cmd)))  # → '42' — без перевода строки
import subprocess, sys
cmd = f'"{sys.executable}" -c "import sys; sys.exit(1)"'
print(repr(subprocess.getoutput(cmd)))  # → '' — о сбое ни слова

См. также

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