q中获取不到写入的文件内容?
Can't get the written file content in q?
我已经在 q for mortals
中复制了确切的示例,如下所示:
q)h:hopen `:D:/q4m/raw
q)h[42]
548i
q)h 10 20 30
548i
q)hclose h
q)get `:D:/q4m/raw
'D:/q4m/raw
[0] get `:D:/q4m/raw
查看目录,文件是在那里创建的。为什么我不能 get
它?
相反,如果我这样做:
q)h:hopen `:D:/q4m/L
q)h[42]
628i
q)h[10 20 30]
628i
q)hclose h
q)get `:D:/q4m/L
0 1 2 3 4 42 10 20 30
事情变得正常,为什么?
在测试了给定的代码后,我相信您的问题可能在于您如何初始化文件。
我假设在有效的代码中您使用了
的一些变体
`:D:/q4m/L set til 5
之前。
然而,这不是为
完成的
`:D:/q4m/raw
如果你要使用
`:D:/q4m/raw set til 5
或者
.[`:D:/q4m/raw;();:;()]
事先第一组代码就可以了。
此外,如果我们使用
查看二进制文件
read1 `:D:/q4m/raw
和
read1 `:D:/q4m/L
并且输出不包括开头附近的 07 那么它没有被识别为正确的 kdb 列表。也就是说,hopen 只是附加到二进制文件而不是修改它。 (如果您注意到指示列表长度的 05 字节,则当您通过句柄添加时它不会增加)。
例如。
你得到的第一个方法
q)read1 `:D:/q4m/raw
0x2a000000000000000a0000000000000014000000000000001e00000000000000
这在 q 中没有任何意义。
第二种方法给出
q)read1 `:D:/q4m/L
0xfe2007000000000005000000000000000000000000000000010000000000000002000000000..
这是一个正确的 kdb 列表(注意 07 表示类型)。
如果你只想阅读 /q4m/raw 那么我建议设置一个空列表,希望到那个列表并按如下方式传递它 `:D:/q4m/raw
q)`:empty set 0#0
`:empty
q)h:hopen `:empty
q)h read1 `:D:/q4m/raw
3i
q)get `:empty
42 10 20 30
这仅在所有条目都是同一类型时才有效。
我已经在 q for mortals
中复制了确切的示例,如下所示:
q)h:hopen `:D:/q4m/raw
q)h[42]
548i
q)h 10 20 30
548i
q)hclose h
q)get `:D:/q4m/raw
'D:/q4m/raw
[0] get `:D:/q4m/raw
查看目录,文件是在那里创建的。为什么我不能 get
它?
相反,如果我这样做:
q)h:hopen `:D:/q4m/L
q)h[42]
628i
q)h[10 20 30]
628i
q)hclose h
q)get `:D:/q4m/L
0 1 2 3 4 42 10 20 30
事情变得正常,为什么?
在测试了给定的代码后,我相信您的问题可能在于您如何初始化文件。 我假设在有效的代码中您使用了
的一些变体 `:D:/q4m/L set til 5
之前。 然而,这不是为
完成的 `:D:/q4m/raw
如果你要使用
`:D:/q4m/raw set til 5
或者
.[`:D:/q4m/raw;();:;()]
事先第一组代码就可以了。
此外,如果我们使用
查看二进制文件read1 `:D:/q4m/raw
和
read1 `:D:/q4m/L
并且输出不包括开头附近的 07 那么它没有被识别为正确的 kdb 列表。也就是说,hopen 只是附加到二进制文件而不是修改它。 (如果您注意到指示列表长度的 05 字节,则当您通过句柄添加时它不会增加)。 例如。 你得到的第一个方法
q)read1 `:D:/q4m/raw
0x2a000000000000000a0000000000000014000000000000001e00000000000000
这在 q 中没有任何意义。 第二种方法给出
q)read1 `:D:/q4m/L
0xfe2007000000000005000000000000000000000000000000010000000000000002000000000..
这是一个正确的 kdb 列表(注意 07 表示类型)。
如果你只想阅读 /q4m/raw 那么我建议设置一个空列表,希望到那个列表并按如下方式传递它 `:D:/q4m/raw
q)`:empty set 0#0
`:empty
q)h:hopen `:empty
q)h read1 `:D:/q4m/raw
3i
q)get `:empty
42 10 20 30
这仅在所有条目都是同一类型时才有效。