从MongoDB获取并拆分地址以仅返回主机ID

2024-05-31 23:41:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试将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,因为我必须在接下来的代码中将它作为参数传递。你知道吗


Tags: 脚本id密码binmongomongodbevalshell
1条回答
网友
1楼 · 发布于 2024-05-31 23:41:44

假设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中进行任何清理。你知道吗

相关问题 更多 >