【发布时间】:2018-05-31 16:43:21
【问题描述】:
我正在寻找一种方法来覆盖和解析 Python REPL 中的所有输出:例如终端中的 python/IPython、qtconsole。
通过覆盖打印功能,这对于打印文本很简单。举个简单的例子,假设我们想在所有输出中添加一个感叹号:
orig_print = print
print = lambda text: orig_print(text + '!')
现在所有打印命令都将添加感叹号。这可以通过以下方式重置:
del print
我的问题:如何对 REPL 输出进行等效操作?例如,我怎样才能使它起作用?
In[1]: 5 + 5
Out[2]: 10!
搜索使我走上了 contextlib、subprocess 和 sys.stdout 的道路,但我还没有找到解决方案。在 Github 上检查了 sympy 的打印模块,没有成功。
【问题讨论】:
-
嗯..也许
sys.settrace可以做到这一点
标签: python ipython stdout read-eval-print-loop