我正在寻找一种方法来覆盖和解析Python REPLs中的所有输出:例如终端qtconsole中的Python/IPython。你知道吗
通过重写print函数,这对于打印文本来说是很简单的。举个简单的例子,假设我们想在所有输出中添加一个感叹号:
orig_print = print
print = lambda text: orig_print(text + '!')
现在所有的print命令都会添加感叹号。可通过以下方式重置:
del print
我的问题是:如何对REPL输出进行等价处理?例如,我怎样才能让它工作?你知道吗
In[1]: 5 + 5
Out[2]: 10!
搜索使我走上了contextlib、subprocess和系统标准输出,但我还没有找到解决办法。在Github上检查了sympy的打印模块,但没有成功。你知道吗
在ipythonqtconsole中基于this article工作的示例。这与OrangeLink的解决方案覆盖标准输出结合使用:
我刚刚试着重写
sys.stdout.write
,结果成功了(有一些奇怪的地方)。如果我错了,有人会纠正我的,但我想不会比这更好了。你知道吗编辑:
我已经走了这么远。我还不知道那1个额外的
!
是从哪里来的。你知道吗相关问题 更多 >
编程相关推荐