以q(kdb)获取当前文件的位置

时间:2018-04-27 01:03:50

标签: kdb

有没有办法以与Python __file__类似的方式获取q中当前运行文件的位置。

1 个答案:

答案 0 :(得分:3)

enter image description here

您可以使用.z.f,它包含在命令行上加载的文件的名称。对于使用\l加载的文件不起作用

jonny@grizzly ~ $ echo 'show .z.f' > a.q
jonny@grizzly ~ $ q a.q
KDB+ 3.5 2017.10.11 Copyright (C) 1993-2017 Kx Systems
l32/ 2()core 1945MB jonny grizzly 127.0.1.1 NONEXPIRE

`a.q
q)\\
jonny@grizzly ~ $ q
KDB+ 3.5 2017.10.11 Copyright (C) 1993-2017 Kx Systems
l32/ 2()core 1945MB jonny grizzly 127.0.1.1 NONEXPIRE

q)\l a.q
`
q)\\

如果您需要在\l的脚本中找到加载的函数的位置,您可以在最新版本的kdb中从value .z.s获取此信息:

jonny@grizzly ~ $ echo 'b:{show value[.z.s]8}' > b.q
jonny@grizzly ~ $ echo 'c:{show value[.z.s]8}' > c.q
jonny@grizzly ~ $ q
KDB+ 3.5 2017.10.11 Copyright (C) 1993-2017 Kx Systems
l32/ 2()core 1945MB jonny grizzly 127.0.1.1 NONEXPIRE

q)\l b.q
q)\l c.q
q)b[]
"/home/jonny/b.q"
q)c[]
"/home/jonny/c.q"

请注意,在旧版本的kdb中,此行为是不同的。作为参考,value .z.s提供了更多信息:

jonny@grizzly ~ $ echo 'd:{show value[.z.s]}' > d.q
jonny@grizzly ~ $ q
KDB+ 3.5 2017.10.11 Copyright (C) 1993-2017 Kx Systems
l32/ 2()core 1945MB jonny grizzly 127.0.1.1 NONEXPIRE

q)\l d.q
q)d[]
0x7733a0520002
,`x
`symbol$()
,`
k){1 .Q.s x;}
12 6 1 1
"..d"
"/home/jonny/d.q"
1
"{show value[.z.s]}"

有关详细信息,请参阅http://code.kx.com/q/ref/dotz/#zf-file