I'm assuming you want to redirect the current script's stdout and stderr, not some subprocess you're running.
This doesn't sound like a very Pythonic thing to do in the first place, but if you need to, the Pythonic solution would be:
- Redirect
stdout
to a file.
- Redirect
stderr
to a custom file-like object that writes to the file and also writes to the real stderr
.
Something like this:
class Tee(object):
def __init__(self, f1, f2):
self.f1, self.f2 = f1, f2
def write(self, msg):
self.f1.write(msg)
self.f2.write(msg)
outfile = open('outfile', 'w')
sys.stdout = outfile
sys.stderr = Tee(sys.stderr, outfile)
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…