redirecting stdout to a file as well as screen
mad.vijay at gmail.com
Thu Apr 12 13:57:26 CEST 2007
On Apr 12, 3:42 pm, "Gabriel Genellina" <gagsl-... at yahoo.com.ar>
> En Thu, 12 Apr 2007 07:23:43 -0300, SamG <mad.vi... at gmail.com> escribió:
> >> >> > How could i make, from inside the program, to have the stdout and
> >> >> > stderr to be printed both to a file as well the terminal(as usual).
> >> >> class Tee(file):
> >> >> others = ()
> >> >> def write(self, data):
> >> >> file.write(self, data)
> >> >> for f in others:
> >> >> f.write(data)
> >> > This is only creating an out.log file and all the stdout and stderr
> >> > are logged there.
> >> Sorry, `for f in others:` should read `for f in self.others:`
> > Does not make difference, does this work for you? Im working on linux.
> > But this code looks portable except for the file path :)
> Yes. And it's rather similar to your other example... Omit sys.stderr as
> Antoon Pardon suggested.
> Gabriel Genellina
Thanks people i have got it working now...
with this program!
def __init__(self, filelist):
self.filelist = filelist
def write(self, str):
for f in self.filelist:
mc = multicaster([sys.stderr, log_file])
sys.stdout = mc
sys.stderr = mc
works perfect for my needs.
More information about the Python-list