Возвращаемое значение 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?