を使用して実行されたプロセスの出力を取得するにはどうすればよいですかsubprocess.call()
?
オブジェクトを渡すStringIO.StringIO
とstdout
次のエラーが発生します:
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 表記 ( -c
count ) を使用しています。これを Windows で試す場合は、-n
同じ結果を得るために に変更することを忘れないでください。
以下にコメントされているように、より詳細な説明はこの他の答え。