pythonで標準出力されたデータを取得する
pythonにおいて、printステートメントなどで出力されるデータは、標準出力ストリームに書きこまれます。
では、一度printステートメントで出力した文字列を取得することはできるんでしょうか。
結論を言えば、できます。
ならどうやって取得するのか
標準出力ストリームに出力しているもの、それがsys.stdoutです。この標準出力ストリームを、別のオブジェクトにしてやればいいのです。
つまり、
>>> import sys >>> sys.stdout = open("tmep.txt","w")
こうすることによって、printステートメントなどで出力されるデータをtemp.txtというファイルの中にしまうことができます。
したがって、
>>> print "HELLO WORLD!" #この時点でtemp.txtに"HELLO WORLD!"がwriteされている >>> sys.stdout.close() >>> sys.stdout = sys.__stdout__ >>> open("temp.txt","r").read() "HELLO WORLD!"
こうすることによって、標準出力されたデータを取得することができます。
あとは、ファイルオブジェクトを使ってデータを呼び出せば良いのです。
意外と簡単でしたね!
ちなみに、sys.stdoutを別のオブジェクトにして、close()したあとは、
標準出力ストリームがない!とpythonにエラーを出されます。
なので、普通の標準出力ストリームに戻すには、
>>> sys.stdout = sys.__stdout__
このような式を書く必要があります。この式で、sys.stdoutは普通の標準出力ストリームになりました。
以上で、今回の記事を終わります。ありがとうございました!