外部プログラム(この場合はpython -V)を実行して、メモリ内の標準エラーをキャプチャしようとしています。
ディスクにリダイレクトすると機能します。
import sys, os
import subprocess
import tempfile
err = tempfile.mkstemp()
print err[1]
p = subprocess.call([sys.executable, '-V'], stderr=err[0] )
しかし、それは楽しいことではありません。次に、そのファイルをメモリに読み込む必要があります。
StringIOを使用してファイルのように動作するメモリ内に何かを作成できると思いましたが、この試みは失敗しました。
import sys, os
import subprocess
import tempfile
import StringIO
err = StringIO.StringIO()
p = subprocess.call([sys.executable, '-V'], stderr=err )
私が得た:
AttributeError: StringIO instance has no attribute 'fileno'
ps。これが機能したら、stdoutもキャプチャしたいと思いますが、それは同じだと思います。ps2。上記をWindowsとPython2.7.3で試しました