我和Frédéric有着相同的想法,但是我写了一个上下文管理器来处理替换stdout:
import sysfrom io import StringIOimport contextlib@contextlib.contextmanagerdef stdoutIO(stdout=None): old = sys.stdout if stdout is None: stdout = StringIO() sys.stdout = stdout yield stdout sys.stdout = oldpre = """i = [0,1,2]for j in i : print j"""with stdoutIO() as s: exec(pre)print("out:", s.getvalue())


