我正在尝试将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 拆分函数,但它说 int 对象没有属性拆分。我只需要 ID,因为我必须在即将到来的代码中将其作为参数传递。
假设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 中进行任何清理。