从MongoDB获取和拆分地址只返回主机ID

时间:2016-03-03 18:15:48

标签: python mongodb shell

我正在尝试将shell脚本转换为python来访问MongoDB。 我有代码:

primport = [] 
primport = call('/opt/mongodb/bin/mongo localhost27017 --eval "printjson(rs.isMaster())" | grep "primary"', shell = True) 

当我试图打印primport时,整个值被打印出来:

 `"primary" : "1404Base:27017"`,

。这不是我想要的。我只想要主机ID 27017.我尝试使用python split函数,但它说int对象没有属性拆分。我只需要ID,因为我必须在即将发布的代码中将其作为参数传递。

1 个答案:

答案 0 :(得分:0)

假设call来自subprocess模块,call返回命令的shell返回码,而不是STDOUT。您希望获得该命令的STDOUT,为此您应该使用subprocess.check_output

尝试使用:

primport = subprocess.check_output('/opt/mongodb/bin/mongo localhost27017 --eval "printjson(rs.isMaster())" | grep "primary" | cut -d ":" -f 2,3', shell = True)

修改 此外,在您的系统调用中添加了cut,因此您无需在Python中进行任何清理。