python + os.systemから値を印刷する方法

python + os.systemから値を印刷する方法

この単純なPythonスクリプトが実際のRedhatバージョンを印刷しないのはなぜですか?

version = os.system( ' cat /etc/redhat-release  | awk \'{print $7}\' '  )
print ("my version is " ,version)

私が走るとき

私たちは:

7.2
('my version is ', 0)
  1. なぜ7.2の代わりに0が出るのですか?
  2. os.systemからバージョン7.2をインポートするのを防ぐ方法は?

ベストアンサー1

os.system()プロセスを実行するだけです。、これは出力をキャプチャしません。

コマンドが出力を生成すると、インタプリタ標準出力ストリームに送信されます。

戻り値はプロセスの終了コードです。

Unixでは、戻り値は、wait()で指定された形式でエンコードされたプロセスの終了状態です。

あなたは次のようなものを使用する必要がありますsubprocess.check_output()または、subprocess.Popen()出力を直接キャプチャします。

>>> arch = subprocess.check_output("uname -a | awk '{print $9}'", shell=True);
>>> arch
'x86_64\n'

おすすめ記事