標準出力を独自クラスに置き変える
既存の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を復帰させる為に用意されています。