python输出语句print i、j、k_python:在exec语句中获取打印输出

I want to get the output of an exec(...) Here is my code:

code = """

i = [0,1,2]

for j in i :

print j

"""

result = exec(code)

How could I get the things that print outputed?

How can I get something like:

0

1

2

Regards and thanks.

解决方案

I had the same idea as Frédéric, but i wrote a context manager to handle replacing 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())

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值