web-dev-qa-db-fra.com

Valeur de retour de x = os.system (..)

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 ? (:

14
Ramon

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'])
29
Martijn Pieters

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?

4
AlokThakur