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