Python Glossary English

все Python 3subprocessфункция

subprocess.check_call()

запуск процессов

Запускает команду, ждёт её и поднимает CalledProcessError при ненулевом коде возврата; при успехе возвращает 0.

Синтаксис

subprocess.check_call(args, *, stdin=None, stdout=None, stderr=None, shell=False, cwd=None, timeout=None)

Частая ошибка — ждать от check_call вывода команды: он возвращает только 0, а вывод уходит прямо в консоль. Нужен вывод — check_output() или run(check=True, capture_output=True). stdout=PIPE здесь так же опасен, как в call: канал не читается, и процесс с большим выводом зависнет. Ровно это же в новом коде пишется как run(..., check=True).

Примеры

import subprocess, sys
rc = subprocess.check_call([sys.executable, '-c', 'print(42)'])
print(rc)  # → 42 / 0 — 42 печатает сам дочерний процесс
import subprocess, sys
try:
    subprocess.check_call([sys.executable, '-c', 'import sys; sys.exit(5)'])
except subprocess.CalledProcessError as e:
    print(e.returncode, e.output)  # → 5 None

См. также

Частые ошибки

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