当前位置: 首页 > 面试题库 >

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

吕鸿朗
2023-03-14
问题内容

我想获取一个输出,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脚本,看起来像这样: 在bash中,我通过执行以下操作运行此脚本: 然而,我在bash中看到的只是一个空行,直到程序完成。然后,所有的打印语句都在一个。 这是tee的预期操作吗?我可以使用tee实时查看输出吗?

  • 问题内容: 我想知道是否有一种方法可以打印没有换行符的元素,例如 并且将打印而不是通常打印的内容 谢谢! 问题答案: 这可以用轻松完成打印() 函数 与 Python 3中 。 会给你 在 Python v2中, 您可以通过以下方式使用该函数: 作为源文件中的 第一条 语句。 如print()文档所述: 请注意,这类似于我最近回答的问题(https://stackoverflow.com/a/12

  • 本文向大家介绍Python用exec评估语句,包括了Python用exec评估语句的使用技巧和注意事项,需要的朋友参考一下 示例            

  • 问题内容: 为什么Python在第9行的简单语句中给我一个语法错误? Python的版本是: 问题答案: 在Python 3中,print是一个函数,您需要像这样调用它。

  • 问题内容: 我有一些程序在评估病情后想得到某种确认。 例如,pusedocode就像 我应该如何在MySQL中做到这一点? 问题答案: 如果您不想两次将文本用作列标题和值,请使用以下stmt!

  • 问题内容: 我正在编写一个小程序,我想使用: 这很好,除了在打印打印语句后没有提示的事实。喜欢: 如果可能的话,如何删除“无”?我也确实搜索了这个问题,但是什么也没有在输入中返回none。 问题答案: 将字符串作为参数,它将自动打印,但返回;这是由打印的。您的代码等效于: 而是使用构建提示并将其直接传递给: