On Feb 15, 7:53 am, "[EMAIL PROTECTED]" <[EMAIL PROTECTED]> wrote: > On Feb 14, 5:10 pm, "goodwolf" <[EMAIL PROTECTED]> wrote: > > > > > like this? > > > class Writers (object): > > > def __init__(self, *writers): > > self.writers = writers > > > def write(self, string): > > for w in self.writers: > > w.write(string) > > > def flush(self): > > for w in self.writers: > > w.flush(): > > > import sys > > > logfile = open('log.txt', 'w') > > sys.stdout = Writers(aya.stdout, file('log.out', 'w'), logfile) > > sys.stderr = Writers(aya.stdout, file('log.err', 'w'), logfile) > > i've tried simliar methods to this and to what Matimus wrote. I know > it works great when using print statements. > However, I'm looking to find something that will work with the output > from a subprocess, such as from spawn, os.system, os.popen, etc.
I think you should be able to use my or goodwolf's solution with the subprocess module. Something like this (untested): [code] class TeeFile(object): def __init__(self,*files): self.files = files def write(self,txt): for fp in self.files: fp.write(txt) if __name__ == "__main__": import sys from subprocess import Popen command = "whatever you want to run" outf = file("log.out","w") errf = file("log.err","w") allf = file("log.txt","w") Popen( command, stdout = TeeFile(sys.__stdout__,outf,allf), stderr = TeeFile(sys.__stderr__,errf,allf) ) [/code] -- http://mail.python.org/mailman/listinfo/python-list