0

所以我使用铅锤对 gerrit 执行 ssh 命令,但我似乎无法将输出作为 json 字典提取。

eg: ssh abc.xyz.com gerrit query --patch-sets --format=json commit:12345678

此输出还转储以下行: type: abcd rowCount: integer runTimeMilliseconds: 123 moreChanges: ABCD

我觉得这也是另一本词典。

那么,无论如何将 ssh 命令的输出拉入 python 字典?

参考:https ://review.openstack.org/Documentation/cmd-query.html

4

3 回答 3

1

查询结果可能会返回多个更改,每个更改将位于单独的行上,由换行符分隔。结果的最后一行是摘要,其中包括有关是否有更多结果的提示(超出服务器端或limit查询中的选项设置的限制)。

在您的情况下,您正在查询单个提交 sha1,因此您只会得到一个结果,但它仍然包含摘要行。

应该可以通过在换行符上拆分输出并分别转换每一行来将结果转换为字典,例如:

import json
data = ssh["abc.xyz.com",
    "gerrit",
    "query",
    "--patch-sets",
    "--format=JSON",
    "commit:",
    "12345678"]()
data2 = json.loads(data.split()[0])
于 2018-07-11T07:00:00.067 回答
0

这是我如何让它工作的:

data = ssh["abc.xyz.com",
    "gerrit",
    "query",
    "--patch-sets",
    "--format=JSON",
    "commit:",
    "12345678"]()

data2 = data[:data.rfind('{')]

有更好的解决方案吗?

于 2018-07-05T17:39:24.480 回答
0

要获得 JSON 格式的答案,您需要将“--format=text”选项更改为“--format=json”:

ssh abc.xyz.com gerrit query --patch-sets --format=json commit:12345678
于 2018-07-04T11:45:09.800 回答