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Сообщить о неточности