This variation works: #------------------------------------------------------------------------ class Tee: def __init__(self, *args): self.files = args
def write(self, data): for f in self.files: result = f.write(data) return result def writelines(self, seq): for i in seq: self.write(i) import sys sys.stdout = Tee(sys.stdout, open("/tmp/stdout.log", "w")) print 'STDOUT', sys.stdout #------------------------------------------------------------------------ It appears that the 'print' statement always uses file.write if isinstance(sys.stdout, file). I don't know whether this has been reported as a bug before, or if there's a reason for the current behavior. It may be an accidental behavior that is left over from the days when builtin types were not subclassable. Jeff
pgp7JrGs05dLk.pgp
Description: PGP signature
-- http://mail.python.org/mailman/listinfo/python-list