将 python 函数的输出从 STDOUT 重定向到 Python 中的变量

2023-11-29

这就是我想要实现的目标


def fun():
    runner = InteractiveConsole()
    while(True):
        code = raw_input()
        code.rstrip('\n')
        # I want to achieve the following
        # By default the output and error of the 'code' is sent to STDOUT and STDERR
        # I want to obtain the output in two variables out and err
        out,err = runner.push(code)

到目前为止我看过的所有解决方案都使用任一管道来发出单独的脚本执行命令(在我的情况下这是不可能的)。我还有其他方法可以实现这一目标吗?


import StringIO, sys
from contextlib import contextmanager

@contextmanager
def redirected(out=sys.stdout, err=sys.stderr):
    saved = sys.stdout, sys.stderr
    sys.stdout, sys.stderr = out, err
    try:
        yield
    finally:
        sys.stdout, sys.stderr = saved


def fun():
    runner = InteractiveConsole()
    while True:
        out = StringIO.StringIO()
        err = StringIO.StringIO()
        with redirected(out=out, err=err):
            out.flush()
            err.flush()
            code = raw_input()
            code.rstrip('\n')
            # I want to achieve the following
            # By default the output and error of the 'code' is sent to STDOUT and STDERR
            # I want to obtain the output in two variables out and err
            runner.push(code)
            output = out.getvalue()
        print output

在较新版本的 python 中,内置了此上下文管理器:

with contextlib.redirect_stdout(out), contextlib.redirect_stderr(err):
    ...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 python 函数的输出从 STDOUT 重定向到 Python 中的变量 的相关文章

随机推荐

  • 响应式水平滚动菜单

    http healthunit com当您从移动电话设备查看时 屏幕顶部有一个干净的水平滚动菜单 由于我正在重新设计一个包含大量导航元素的网站 我正在尝试模仿相同的功能 要求 左右滚动单击选项 居中列表项选项在空间中居中 一次只能看到一个列
  • 使用 python 的 re 模块正确解析字符串文字

    我正在尝试为我用 Python 编写的 javascript 预处理器添加一些轻量级降价支持 在大多数情况下 它是有效的 但有时我使用的正则表达式表现得有点奇怪 我认为这与原始字符串和转义序列有关 正则表达式是
  • Echarts:绘制信号的方差

    我想在图表中绘制多个信号的方差 或者基本上填充上部信号和下部信号之间的空间 是否可以创建这样的图表 我看到了置信带示例 https echarts apache org examples en editor html c confidenc
  • 向 JPanel 添加椭圆形

    这是我的简单代码 我真的不知道如何将绘制的椭圆添加到JPanel 我以前画过一些画 但我从未使用过构造函数 所以我不知道 public class Buffer extends JPanel public JFrame frame publ
  • 我在记录时崩溃:“所需条件为假:format.sampleRate == hwFormat.sampleRate”afterweb rtc 调用

    我的记录工作正常 但问题是在 WebRTC 调用之后 我崩溃了 所需条件为 false format sampleRate hwFormat sampleRate 这是我开始崩溃和 installTap 的方式 func startReco
  • asp .Net 中的 JavaScript

    我在我的 asp Net 页面中收到 WebResource 错误 var pendingCallbacks new Array Microsoft JScript runtime error Array is undefined 我不知道
  • 无法删除以前的 doSMP 队列

    我正在尝试使用 doSMP 当我尝试时w lt startWorkers 4 我收到错误 1 在startWorkers workerCount 4 中 存在使用 doSMP1 的现有 doSMP 会话 实际上是 doSMP1 doSMP8
  • 在 GMAIL 中预填充大量正文文本时出现请求 URI 太长错误

    这是后续this问题 我正在构建 Google Apps 应用程序的地方 我可以使用以下网址从我的应用程序调用 Gmail 撰写消息页面 但是 当我尝试在 body 参数中传递很长的一行文本 例如回复消息正文 时 我从 Gmail 收到一条
  • Kotlin 通过反射调用伴随函数

    我是科特林新手 面临反射和泛型的问题 下面是我的代码 abstract class Action fun sleep body Person gt Unit var p Person a p body println p name is z
  • 精灵套件保存最高分

    我使用 Sprite Kit 带有 swift xCode 6 beta 4 构建了一个游戏 我需要保留玩家达到的最高分数 所以只有一个 Int 我知道有一种方法可以使用 NSCoding 来做到这一点 我用 google 搜索了一下 只找
  • cassandra快照没有nodetool但仅通过java api

    如何在不使用nodetool而仅通过java api的情况下拍摄cassandra快照 我需要不使用 nodetool 实用程序来拍摄 cassandra 中键空间的快照 我必须通过java api来完成 如果有人知道怎么做 请回答 我必须
  • 检查 A 列的值是否存在于 B 列的同一行或前一行中

    我有这个数据框 df lt structure list A 1 5 B c 1L 5L 2L 3L 3L class data frame row names c NA 5L A B 1 1 1 2 2 5 3 3 2 4 4 3 5 5
  • 缩放和缩放

    我需要实现缩放JDesktopPane包含在一个JScrollPane 我之前已经通过覆盖成功缩放paintComponent 方法及调用scale double double 这不能正常工作 JInternalFrame s and JP
  • 重复后台任务[关闭]

    Closed 这个问题需要细节或清晰度 目前不接受答案 我刚刚开始尝试使用 任务 而不是线程 并尝试实现一个具有后台 清理 任务的对象 只要该对象正在使用 该任务每 5 分钟运行一次 但不应阻止垃圾收集 粗略地说 这显然行不通 public
  • selenium python webscrape 在第一次迭代后失败

    我正在通过到到网保存评论 未翻译 原始 和翻译评论 从葡萄牙语到英语 因此 抓取工具首先选择要显示的葡萄牙语评论 然后像往常一样将它们一一转换为英语 并将翻译后的评论保存在com 中 而扩展的非翻译评论则保存在expanded commen
  • 如何在不使用新图像的情况下减小Android单选按钮上显示的图像大小

    我设计了一个活动 其中有两个单选按钮 但这些尺寸已经足够了 我想减小它 我使用的文本大小仅减小文本 如果布局尺寸减小 则仅减小视图而不是单选按钮圆圈
  • 当我只使用 LinqToSql 和 Ado.Net 时,为什么 TransactionScope 使用分布式事务

    我们在一台机器上遇到问题 并显示错误消息 服务器 XXX 上的 MSDTC 不可用 该代码使用的是交易范围包装一些 LingToSql 数据库代码 交易内部还有一些原始的 Ado net 由于仅访问单个 SQL 数据库 2005 为什么要使
  • C#,从TextBox和TextArea获取其他应用程序文本?

    早上好 我希望能够分析我正在编写的文本 无论我是什么应用程序 例如 如果我在这里输入此文本区域 我希望能够获取文本 就像在 Outlook 的主题文本框中一样 我在Google上搜索没有成功 也许是因为它需要Win32API调用 目标是开始
  • 使用指针参数从 C# 调用 C++ 方法 (WCT)

    我对从 C 调用 C 方法的概念很陌生 假设我想调用一个C 函数GetThreadWaitChain来自 C https msdn microsoft com en us library windows desktop ms679364 v
  • 将 python 函数的输出从 STDOUT 重定向到 Python 中的变量

    这就是我想要实现的目标 def fun runner InteractiveConsole while True code raw input code rstrip n I want to achieve the following By