Возвращаемое значение x = os.system(..)

Когда я печатаю os.system("whoami") в Python, как root, возвращает root, но когда я пытаюсь присвоить его переменной x = os.system("whoami") это устанавливает значение х в 0. Почему? (:

2 ответа

Решение

os.system() возвращает (закодированное) значение выхода процесса. 0 означает успех:

В Unix возвращаемое значение является состоянием выхода процесса, закодированного в формате, указанном для wait(), Обратите внимание, что POSIX не определяет значение возвращаемого значения функции C system(), поэтому возвращаемое значение функции Python зависит от системы.

Вывод, который вы видите, записывается в stdout, так что ваша консоль или терминал так и не вернулись к вызывающему Python.

Если вы хотели захватить stdout использовать subprocess.check_output() вместо:

x = subprocess.check_output(['whoami'])

os.system('command') возвращает 16-битное число, из которых первые 8 бит слева (lsb) говорят о сигнале, используемом os для закрытия команды, следующие 8 бит говорят о коде возврата команды.

См. Мой ответ для получения более подробной информации в разделе Что такое возвращаемое значение os.system() в Python?

Другие вопросы по тегам