Python でシステム コールを実行し、その出力を Python プログラムで操作できる文字列に保存しようとしています。
#!/usr/bin/python
import subprocess
p2 = subprocess.Popen("ntpq -p")
ここで提案されているいくつかのことを含め、いくつかのことを試しました:
しかし運がなかった。
ベストアンサー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"]
。