当在jupyter笔记本中使用PyKX的
%%q
魔法时,似乎打印了每行代码的输出,包括::
。例如,请参阅 文档 上的示例。有没有办法抑制空输出(::
)?
我尝试将
;
添加到每行代码中,但对于以 ::
结尾的每行代码,仍然会打印 ;
。我希望删除 ::
的所有输出,或者仅打印单元格中最后一行代码的输出,并删除前几行的所有结果(即使该行不是以 ;
结尾)。
我通过定义一个模仿 PyKX 中的自定义魔法命令找到了一个临时解决方案(此处定义:https://github.com/KxSystems/pykx/blob/main/src/pykx/nbextension.py)。在我的用例中,我不介意在每个笔记本的顶部添加定义,因此我只需添加以下代码来定义一个新的魔法命令
%%qq
来执行相同的操作。我也不使用 PyKX q magic 命令的任何选项,因此我删除了这些代码。
import pykx as kx
from IPython.core.magic import register_cell_magic
@register_cell_magic
def qq(instructions, code):
ld = kx.SymbolAtom('.Q.pykxld')
_q = kx.q
code = [kx.CharVector(x) for x in code.split('\n')][:-1]
ret = _q(
"{[ld;code;file] value (@';\"q\";enlist[file],/:value(ld;code))}",
ld,
code,
b'jupyter_cell.q'
)
if not ret[-1] == kx.q('::'):
print(_q('{x y}', ret, kx.q.count(ret)-1)