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