python:在exec语句中获取打印输出

发布于 2021-01-29 14:10:32

我想获取一个输出,exec(...)这是我的代码:

code = """
i = [0,1,2]
for j in i :
    print j
"""
result = exec(code)

如何获得打印输出的内容?我如何得到类似的东西:

0
1
2

问候和感谢。

关注者
0
被浏览
86
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    我和Frédéric有着相同的想法,但是我写了一个上下文管理器来处理替换stdout:

    import sys
    from io import StringIO
    import contextlib
    
    @contextlib.contextmanager
    def stdoutIO(stdout=None):
        old = sys.stdout
        if stdout is None:
            stdout = StringIO()
        sys.stdout = stdout
        yield stdout
        sys.stdout = old
    
    code = """
    i = [0,1,2]
    for j in i :
        print j
    """
    with stdoutIO() as s:
        exec(code)
    
    print("out:", s.getvalue())
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看