2014-09-23 22 views
9

Quando digito os.system("whoami") in Python, come root, restituisce root, ma quando provo ad assegnarlo a una variabile x = os.system("whoami") imposta il valore di x su 0. Perché ? (:.Valore restituito di x = os.system (..)

risposta

22

os.system() restituisce il codificato) valore di uscita di processo (0 significa successo:

In Unix, il valore restituito è lo stato di uscita del processo codificato nel formato specificato per wait() noti che POSIX. non specifica il significato del valore di ritorno della funzione di sistema C(), in modo che il valore di ritorno della funzione di Python è dipendente dal sistema.

l'output che si vede è scritto a stdout, quindi la console o un terminale e non restituito a Python chiamante.

Se si voleva catturare stdout, utilizzare subprocess.check_output() invece:

x = subprocess.check_output(['whoami']) 
3

os.system ('comando') restituisce un numero a 16 bit, che primi 8 bit da sinistra (LSB) parla di segnale utilizzato dalla os per chiudere il comando, Successivo 8 bit parla del codice di ritorno del comando.

Consultare la mia risposta per ulteriori dettagli in What is the return value of os.system() in Python?