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

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

code = """

i = [0,1,2]

for j in i :

print j

"""

result = exec(code)

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

0

1

2

问候和感谢。

回答:

我和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())

以上是 python:在exec语句中获取打印输出 的全部内容, 来源链接: utcz.com/qa/411564.html

回到顶部