On Apr 12, 12:40 pm, "Ant" <[EMAIL PROTECTED]> wrote: > On Apr 12, 8:14 am, "SamG" <[EMAIL PROTECTED]> wrote: > > > 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). > > One way would be to create a custom class which has the same methods > as the file type, and held a list of file-like objects to write to. > e.g. > > class multicaster(object): > def __init__(self, filelist): > self.filelist = filelist > > def write(self, str): > for f in self.filelist: > f.write(str) > def writelines(self, str_list): > #etc > > Then assign stdout and stderr to a new instance of one of these > objects: > > mc = multicaster([sys.stdout, sys.stderr, log_file]) > sys.stdout = mc > sys.stderr = mc > > HTH
I have written this.... import sys class multicaster(object): def __init__(self, filelist): self.filelist = filelist def write(self, str): for f in self.filelist: f.write(str) log_file='out.log' mc = multicaster([sys.stdout, sys.stderr, log_file]) sys.stdout = mc sys.stderr = mc print "Hello" And i get this when i run the porgram. HelloHelloTraceback (most recent call last): Traceback (most recent call last): Kindly advice! -- http://mail.python.org/mailman/listinfo/python-list