Example #1
0
class CaptureStdio(object):
    """
    A simple context manager for redirecting stdout and stderr to a StringIO
    buffer.
    """

    def __init__(self, stdout=True, stderr=True):
        self.stdout = StringIO()
        self.stderr = StringIO()

    def __enter__(self):
        self._original_stdout = sys.stdout
        self._original_stderr = sys.stderr
        sys.stdout = self.stdout
        sys.stderr = self.stderr
        return self.stdout, self.stderr

    def __exit__(self, *args, **kwargs):
        sys.stdout = self._original_stdout
        sys.stderr = self._original_stderr
        self.stdout.close()
        self.stderr.close()