在 Jupyter 笔记本中使用魔法 %%q(使用 PyKX,而不是 PyQ)时,有没有办法抑制空输出(`::`)?

问题描述 投票:0回答:1

当在jupyter笔记本中使用PyKX的

%%q
魔法时,似乎打印了每行代码的输出,包括
::
。例如,请参阅 文档 上的示例。有没有办法抑制空输出(
::
)?

我尝试将

;
添加到每行代码中,但对于以
::
结尾的每行代码,仍然会打印
;
。我希望删除
::
的所有输出,或者仅打印单元格中最后一行代码的输出,并删除前几行的所有结果(即使该行不是以
;
结尾)。

jupyter-notebook jupyter kdb pykx
1个回答
0
投票

我通过定义一个模仿 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)
© www.soinside.com 2019 - 2024. All rights reserved.