Python 3.5+subprocessпонятие
subprocess.CompletedProcess
запуск процессов
Результат subprocess.run(): аргументы запуска, код возврата и перехваченные stdout и stderr завершившегося процесса.
Синтаксис
result = subprocess.run(args, ...) # result.args, .returncode, .stdout, .stderr
Ненулевой returncode сам по себе ничего не возбуждает — проверьте его или вызовите check_returncode(), который поднимет CalledProcessError. stdout и stderr равны None, если вывод не перехватывали, и содержат bytes, если не передан text=True или encoding. Вывод почти всегда кончается переводом строки: сравнивать с ожидаемым стоит после .strip().
Примеры
import subprocess, sys
r = subprocess.run([sys.executable, '-c', 'print(42)'],
capture_output=True, text=True)
print(r.returncode) # → 0
print(repr(r.stdout)) # → '42\n'
print(r.stderr == '') # → True
import subprocess, sys
r = subprocess.run([sys.executable, '-c', 'import sys; sys.exit(1)'])
print(r.stdout) # → None — вывод не перехватывали
try:
r.check_returncode()
except subprocess.CalledProcessError as e:
print(e.returncode) # → 1
См. также
Частые ошибки
Открыть в полном глоссарииdocs.python.orgСообщить о неточности