標準出力を独自クラスに置き変える

既存のCUIベースのpythonスクリプトを、GUIベースに乗せ換えたりするときがありますよね。
標準出力を変更できれば、既存モジュールを変更せずにprint文表示先を、GUIコントロールに変えることが可能です。

pythonでは標準出力はsys.stdoutに設定されていますので、それを書き換えます。

>>> class MyOutput:
...     """独自のstdoutクラス"""
...     def __init__(self):
...         self.buffer = ""
...     def write(self,arg):
...         self.buffer += arg
...
>>> import sys
>>> sys.stdout = obj = MyOutput()
>>> print "write test."
>>> sys.stdout = sys.__stdout__
>>> 
>>> print "MyOutput buffer:",obj.buffer
MyOutput buffer: write test.

>>> 

独自stdoutクラスは、writeメソッドを実装する必要があります。
また、sys.__stdout__は、ユーザーが書き換えたsys.stdoutを復帰させる為に用意されています。