subprocess.Popen呼び出しの出力を文字列に保存する [重複] 質問する

subprocess.Popen呼び出しの出力を文字列に保存する [重複] 質問する

Python でシステム コールを実行し、その出力を Python プログラムで操作できる文字列に保存しようとしています。

#!/usr/bin/python
import subprocess
p2 = subprocess.Popen("ntpq -p")

ここで提案されているいくつかのことを含め、いくつかのことを試しました:

subprocess.call() の出力を取得する

しかし運がなかった。

ベストアンサー1

Python 2.7またはPython 3の場合

Popenオブジェクトを直接作成する代わりに、subprocess.check_output()関数コマンドの出力を文字列に保存するには:

from subprocess import check_output
out = check_output(["ntpq", "-p"])

Python 2.4-2.6の場合

メソッドを使用しますcommunicate

import subprocess
p = subprocess.Popen(["ntpq", "-p"], stdout=subprocess.PIPE)
out, err = p.communicate()

outそれがあなたが望むものです。

他の回答に関する重要な注意

コマンドをどのように渡したかに注意してください。この"ntpq -p"例では別の問題が浮上します。 はPopenシェルを呼び出さないので、コマンドとオプションのリストを使用します["ntpq", "-p"]

おすすめ記事