有没有办法以与Python __file__
类似的方式获取q中当前运行文件的位置。
答案 0 :(得分:3)
您可以使用.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