この単純なpythonスクリプトが実際のredhatバージョンを出力しないのはなぜですか?
version = os.system( " cat /etc/redhat-release | awk \"{print $7}\" " ) print ("my version is " ,version)
実行すると
次のようになります:
7.2 ("my version is ", 0)
- なぜ代わりに07.2?
- os.systemからバージョン-7.2を取得しないようにする方法?
コメント
- Python2またはPython3?
- これをSOに移動する必要がありますか?
回答
os.system()
はプロセスを実行するだけで、出力をキャプチャしません:
コマンドが出力を生成すると、それはインタープリターの標準出力ストリームに送信されます。
戻り値はプロセスの終了コード:
Unixでは、戻り値は、wait()に指定された形式でエンコードされたプロセスの終了ステータスです。
直接出力をキャプチャします。
>>> arch = subprocess.check_output("uname -a | awk "{print $9}"", shell=True); >>> arch "x86_64\n"
コメント
- わかりました。ただし、上記の例では、" \ n "?
- @jangaを使用せずにx86_64のみをキャプチャする方法、arch [:-1]を使用しますか?
- わかりました、動作します、別の最後の質問、os.system(' sed -is " /7.0/$new_version/g " / tmp / file)、置き換えたい文字列を出力します
- 改行を削除するには、
.rstrip()
- すべての構文を教えていただけますか?