是否有一种简单的方法可以让ipython控制台将cmd-line重定向到外部解析器,然后在当前会话中输出结果。
比如说我有解析器来计算表达式(仅为了示例)。 然后我想要cmd-line以" calc开始:"将它传递给这个外部解析器......这是一个假设的例子:
In[XX]: calc: 5 + 5
external calc: 5 + 5 = 10
等等,你明白了......
这是我到目前为止最接近的: 首先创建一个shell脚本:
#!/bin/sh
echo $1
然后在ipython:
In [473]: !./x 123
123
如果它在系统路径中则更短:
In [475]: !x 123
123
现在,如果我可以在调用之间共享状态。
答案 0 :(得分:0)
我让它成为扩展名:
from __future__ import print_function
from IPython.core.magic import (Magics, magics_class, line_magic, cell_magic, line_cell_magic)
from bi_lang import *
@magics_class
class BiMagics(Magics):
def __init__(self, shell):
super(BiMagics, self).__init__(shell)
self.bi = BiLang()
@line_magic
def do(self, line):
rv = self.bi.run(line)
return rv
ip = get_ipython()
magics = BiMagics(ip)
ip.register_magics(magics)
然后:
In [3]: %reload_ext ipython_extension
In [4]: %do 5 + 6
===== return ast =====
Value
+- val 11
`- vtype 'num'
如果您需要更多信息,请点击此处: http://ipython.readthedocs.io/en/stable/config/custommagics.html#defining-magics