Lorsque je tape os.system("whoami")
en Python, en tant que root, il renvoie root
, mais lorsque j'essaie de l'affecter à une variable x = os.system("whoami")
il définit la valeur de x à 0 . Pourquoi ? (:
os.system()
renvoie la valeur de sortie de processus (codée). 0
Signifie succès:
Sous Unix, la valeur de retour est l'état de sortie du processus codé au format spécifié pour
wait()
. Notez que POSIX ne spécifie pas la signification de la valeur de retour de la fonction C system (), donc la valeur de retour de la fonction Python dépend du système.
La sortie que vous voyez est écrite dans stdout
, donc votre console ou votre terminal, et n'est pas retournée à l'appelant Python.
Si vous souhaitez capturer stdout
, utilisez plutôt subprocess.check_output()
:
x = subprocess.check_output(['whoami'])
os.system ('command') renvoie un nombre de 16 bits, dont les 8 premiers bits de gauche (lsb) parlent du signal utilisé par os pour fermer la commande, les 8 bits suivants parlent du code de retour de la commande.
Référez-vous à ma réponse pour plus de détails dans Quelle est la valeur de retour de os.system () en Python?