On Apr 12, 3:35 am, "SamG" <[EMAIL PROTECTED]> wrote: > 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!
Try: log_file = open("out.log", "w") -- http://mail.python.org/mailman/listinfo/python-list