os.system の出力を変数に割り当てて、画面に表示されないようにする [重複] 質問する

os.system の出力を変数に割り当てて、画面に表示されないようにする [重複] 質問する

実行したコマンドの出力をos.system変数に割り当てて、画面に出力されないようにしたいのですが、以下のコードでは出力が画面に送信され、出力される値はvar0 です。これは、コマンドが正常に実行されたかどうかを示していると思います。コマンド出力を変数に割り当てて、画面に表示されないようにする方法はありますか?

var = os.system("cat /etc/services")
print var #Prints 0

ベストアンサー1

からこの質問かなり前に質問しましたが、あなたが使いたいのは次のものですpopen:

os.popen('cat /etc/services').read()

からPython 3.6 のドキュメント

これは、subprocess.Popen を使用して実装されます。サブプロセスを管理および通信するためのより強力な方法については、そのクラスのドキュメントを参照してください。


対応するコードは次のとおりですsubprocess:

import subprocess

proc = subprocess.Popen(["cat", "/etc/services"], stdout=subprocess.PIPE, shell=True)
(out, err) = proc.communicate()
print("program output:", out)

おすすめ記事