contextlib.redirect_stdout in Python2.7

2020-08-17 17:40发布

问题:

I use Python2.7 and I want the function: contextlib.redirect_stdout. I mean, I want to redirect the output of specific function (not the all program). The problem is - only Python3 supports "context.redirect_stdout" and no Python2.7.

Someone know how can I use the same function in Python2.7 or to implement the same idea?

Thanks in advance

回答1:

Something like this should do the job if you're not worried about re-using the same context manager object.

import sys
import contextlib

@contextlib.contextmanager
def redirect_stdout(target):
    original = sys.stdout
    try:
        sys.stdout = target
        yield
    finally:
        sys.stdout = original