我正在尝试将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,因为我必须在即将发布的代码中将其作为参数传递。
答案 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中进行任何清理。