Am 28.04.2011 13:14, schrieb Chris Rebert:

import a, b, sys
def c():
     orig_stdout = sys.stdout
     sys.stdout = open('my_log_file.log', 'w')
     a.a()
     b.b()
     sys.stdout.close()
     sys.stdout = orig_stdout


Someone may have written a with-statement context manager that
abstracts away the swapping.

@contextlib.contextmanager
def swap_stdout(target):
    orig_stdout = sys.stdout
    sys.stdout = target
    try:
        yield target
    finally:
        sys.stdout = orig_stdout

In this case, I can use all kinds of files (open() files, StringIO objects etc.), and can re-use them if necessary, in order to prepend/append data.

Closing can happen additionally, if the user wants.


Thomas
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to