1. ホーム
  2. python

[解決済み] os.systemの出力を変数に代入し、画面に表示されないようにする [重複] 。

2022-02-18 02:11:08

質問内容

を使って実行したコマンドの出力を os.system を変数に追加し、画面に出力されないようにしました。しかし、以下のコードでは、画面に出力されてしまい var は0です。これはコマンドが正常に実行されたかどうかを意味すると思います。コマンドの出力を変数に代入して、画面に表示させないようにする方法はないでしょうか?

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

解決方法は?

引用元: " PythonでBashのバックティックに相当するもの "、昔質問したことがありますが、使いたいのは 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