1. ホーム
  2. python

[解決済み] x = os.system(...)の戻り値 [重複]。

2022-02-12 19:28:46

質問

と入力すると os.system("whoami") を Python のルートとして返します。 root しかし、それを変数に代入しようとすると x = os.system("whoami") xの値が0になるのですが、なぜでしょうか?

どのように解決するのですか?

os.system() は、プロセスの終了値を(エンコードして)返します。 0 は成功を意味します。

Unixでは、戻り値はプロセスの終了ステータスを wait() . なお、POSIXはCのsystem()関数の戻り値の意味を規定していないので、Pythonの関数の戻り値はシステム依存となります。

表示される出力は、以下のように書き込まれます。 stdout Pythonの呼び出し元には戻らず、コンソールやターミナルに表示されます。

をキャプチャしたい場合 stdout を使用します。 subprocess.check_output() の代わりに

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