subprocess.call() の出力を取得する [重複] 質問する

subprocess.call() の出力を取得する [重複] 質問する

を使用して実行されたプロセスの出力を取得するにはどうすればよいですかsubprocess.call()?

オブジェクトを渡すStringIO.StringIOstdout次のエラーが発生します:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/subprocess.py", line 444, in call
    return Popen(*popenargs, **kwargs).wait()
  File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/subprocess.py", line 588, in __init__
    errread, errwrite) = self._get_handles(stdin, stdout, stderr)
  File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/subprocess.py", line 945, in _get_handles
    c2pwrite = stdout.fileno()
AttributeError: StringIO instance has no attribute 'fileno'

ベストアンサー1

Pythonバージョン2.7以降をお持ちの場合は、subprocess.check_outputこれは基本的にあなたが望む通りの動作をします(標準出力文字列として)。

簡単な例 (Linux バージョン、注記を参照):

import subprocess

print subprocess.check_output(["ping", "-c", "1", "8.8.8.8"])

注意:ピンコマンドは Linux 表記 ( -ccount ) を使用しています。これを Windows で試す場合は、-n同じ結果を得るために に変更することを忘れないでください。

以下にコメントされているように、より詳細な説明はこの他の答え

おすすめ記事