Python Glossary English

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

os.system

os — аварийное завершение

Выполняет команду в системной оболочке и ждёт её завершения. На Unix возвращает закодированный статус ожидания, на Windows — код возврата.

Синтаксис

os.system(command)

На Unix возвращает не код возврата, а закодированный статус ожидания: os.system('exit 3') даёт 768, и перевести его помогает os.waitstatus_to_exitcode. На Windows результат — сам код. Команда идёт через оболочку, поэтому строка с данными пользователя открывает путь к внедрению команд. Вывод не перехватывается. Для новой работы рекомендован subprocess.run со списком аргументов.

Примеры

# Python 3.9+
import os
print(os.system('echo привет'))   # → сначала оболочка печатает «привет», потом 0 — код успешного завершения
code = os.system('exit 3')
print(code)   # → зависит от ОС: 3 в Windows, 768 (то есть 3 << 8) в Unix
print(os.waitstatus_to_exitcode(code))   # → только Unix: 3 — статус ожидания распакован в настоящий код возврата
print(os.system('такой-команды-нет'))   # → оболочка печатает своё сообщение об ошибке, код ≠ 0; исключение НЕ бросается

См. также

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