Когда я набираю os.system("whoami")
в Python, как root, он возвращает root
, но когда я пытаюсь назначить его переменной x = os.system("whoami")
, он устанавливает значение x в 0. Почему? (:
Возвращаемое значение x = os.system(..)
Ответ 1
os.system()
возвращает (закодированное) значение завершения процесса. 0
означает успех:
В Unix возвращаемое значение является состоянием выхода процесса, закодированного в формате, указанном для
wait()
. Обратите внимание, что в POSIX не указано значение возвращаемого значения функции C system(), поэтому возвращаемое значение функции Python зависит от системы.
Вывод, который вы видите, записывается в stdout
, поэтому ваша консоль или терминал, а не возвращается вызывающей стороне Python.
Если вы хотите захватить stdout
, используйте вместо этого subprocess.check_output()
:
x = subprocess.check_output(['whoami'])
Ответ 2
os.system('command')
возвращает 16-битное число, из которых первые 8 бит слева (lsb) говорят о сигнале, используемом os для закрытия команды, следующие 8 бит говорят о коде возврата команды.
Обратитесь к моему ответу для более подробной информации в Что такое возвращаемое значение os.system() в Python?