web-dev-qa-db-ja.com

x = os.system(..)の戻り値

Pythonでos.system("whoami")と入力すると、ルートとしてrootが返されますが、変数x = os.system("whoami")に割り当てようとすると、xの値が0に設定されます。 。 なぜ ? (:

14
Ramon

os.system() は、(エンコードされた)プロセス終了値を返します。 _0_は成功を意味します:

Unixでは、戻り値はwait()に指定された形式でエンコードされたプロセスの終了ステータスです。 POSIXはCのsystem()関数の戻り値の意味を指定しないため、Python関数の戻り値はシステムに依存します。

表示される出力はstdoutに書き込まれるため、コンソールまたは端末であり、Python呼び出し元に返されません。

stdoutをキャプチャする場合は、代わりに subprocess.check_output() を使用します。

_x = subprocess.check_output(['whoami'])
_
29
Martijn Pieters

os.system( 'command')は16ビットの数値を返します。左から最初の8ビット(lsb)はosがコマンドを閉じるために使用する信号について話し、次の8ビットはコマンドの戻りコードについて話します。

Pythonのos.system()の戻り値は? の詳細については、私の答えを参照してください

4
AlokThakur