Issue of redirecting the stdout to both file and screen

人言落日是天涯,望极天涯不见家 kelvin.you at gmail.com
Mon May 28 05:17:39 EDT 2007


I wanna print the log to both the screen and file, so I simulatered a
'tee'

class Tee(file):

    def __init__(self, name, mode):
        file.__init__(self, name, mode)
        self.stdout = sys.stdout
        sys.stdout = self

    def __del__(self):
        sys.stdout = self.stdout
        self.close()

    def write(self, data):
        file.write(self, data)
        self.stdout.write(data)

Tee('logfile', 'w')
print >>sys.stdout, 'abcdefg'

I found that it only output to the file, nothing to screen. Why?
It seems the 'write' function was not called when I *print* something.




More information about the Python-list mailing list