在python中获取Gerrit SSH输出
因此,我使用plumbum对gerrit执行ssh命令,但我似乎无法将输出作为json字典在python中获取Gerrit SSH输出,python,ssh,gerrit,plumbum,Python,Ssh,Gerrit,Plumbum,因此,我使用plumbum对gerrit执行ssh命令,但我似乎无法将输出作为json字典 eg: ssh abc.xyz.com gerrit query --patch-sets --format=json commit:12345678 此操作的输出还转储以下行: 类型:abcd 行数:整数 运行时毫秒:123 更多更改:ABCD 我觉得这也是另一本字典 eg: ssh abc.xyz.com gerrit query --patch-sets --format=json commit:
eg: ssh abc.xyz.com gerrit query --patch-sets --format=json commit:12345678
此操作的输出还转储以下行:
类型:abcd
行数:整数
运行时毫秒:123
更多更改:ABCD
我觉得这也是另一本字典
eg: ssh abc.xyz.com gerrit query --patch-sets --format=json commit:12345678
那么,有没有办法将ssh命令的输出拉到python字典中呢
Ref:要获得JSON格式的答案,您需要将“-format=text”选项更改为“-format=JSON”:
以下是我如何让它工作的:
data = ssh["abc.xyz.com",
"gerrit",
"query",
"--patch-sets",
"--format=JSON",
"commit:",
"12345678"]()
data2 = data[:data.rfind('{')]
有更好的解决办法吗 查询结果可能会返回多个更改,每个更改都位于单独的行上,由换行符分隔。结果的最后一行是摘要,其中包含关于是否有更多结果的提示(超出服务器端或通过查询上的
limit
选项设置的限制)
在您的例子中,您正在查询一个commit sha1,因此您只得到一个结果,但它仍然包括摘要行
通过在换行符上拆分输出并分别转换每一行,可以将结果转换为dict,例如:
import json
data = ssh["abc.xyz.com",
"gerrit",
"query",
"--patch-sets",
"--format=JSON",
"commit:",
"12345678"]()
data2 = json.loads(data.split()[0])
因为你似乎在问关于铅垂的具体问题,我建议编辑添加标签。答案似乎是(但我之前没有公开),即位
(cat My bad。是的,我使用了它,但问题是从那以后,我无法将输出存储到python中的dict中,因为输出生成了两个字典!